You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openwhisk.apache.org by ho...@apache.org on 2018/01/12 22:07:00 UTC
[incubator-openwhisk-wskdeploy] branch master updated: Phase 3 of
i18n readiness and conversion to IDs (#687)
This is an automated email from the ASF dual-hosted git repository.
houshengbo pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-openwhisk-wskdeploy.git
The following commit(s) were added to refs/heads/master by this push:
new 9840db4 Phase 3 of i18n readiness and conversion to IDs (#687)
9840db4 is described below
commit 9840db4e50118a3a980d0cfb142dc73c5f266f8f
Author: Matt Rutkowski <mr...@us.ibm.com>
AuthorDate: Fri Jan 12 16:06:58 2018 -0600
Phase 3 of i18n readiness and conversion to IDs (#687)
* Use constant strings for OpenWhisk YAML keys in i18n strings.
* Update manifest_parser.go to use i18n IDs.
* Convert i18n warnings for pkg version/license to IDs.
* Limit warnings in manifest_parser.go need to use i18n string.
* Limit warnings in validation.go need to use i18n strings.
---
deployers/servicedeployer.go | 117 ++++++++++++++++++++++-----------------
parsers/manifest_parser.go | 91 +++++++++++++++++++++---------
parsers/yamlparser.go | 61 +++++++++++++++++++-
utils/validation.go | 27 +++++----
wski18n/i18n_ids.go | 43 +++++++++++++-
wski18n/i18n_ids_test.go | 2 +
wski18n/i18n_resources.go | 22 ++++----
wski18n/resources/en_US.all.json | 49 +++++-----------
8 files changed, 273 insertions(+), 139 deletions(-)
diff --git a/deployers/servicedeployer.go b/deployers/servicedeployer.go
index 39d1579..b382af5 100644
--- a/deployers/servicedeployer.go
+++ b/deployers/servicedeployer.go
@@ -143,7 +143,7 @@ func (deployer *ServiceDeployer) ConstructDeploymentPlan() error {
// Project Name in manifest/deployment file is mandatory for managed deployments
if deployer.ProjectName == "" {
errmsg := wski18n.T(wski18n.ID_ERR_MISSING_MANDATORY_KEY_X_key_X,
- map[string]interface{}{"key": "project name"})
+ map[string]interface{}{"key": parsers.PROJECT_NAME})
return wskderrors.NewYAMLFileFormatError(manifest.Filepath, errmsg)
}
@@ -179,8 +179,11 @@ func (deployer *ServiceDeployer) ConstructDeploymentPlan() error {
// (TODO) delete this warning after deprecating application in manifest file
if manifest.Application.Name != "" {
- wskprint.PrintOpenWhiskWarning(wski18n.T(wski18n.ID_WARN_DEPRECATED_KEY_REPLACED,
- map[string]interface{}{"oldkey": "application", "newkey": "project", "filetype": "manifest"}))
+ wskprint.PrintOpenWhiskWarning(wski18n.T(wski18n.ID_WARN_DEPRECATED_KEY_REPLACED_X_oldkey_X_filetype_X_newkey_X,
+ map[string]interface{}{
+ "oldkey": parsers.YAML_KEY_APPLICATION,
+ "newkey": parsers.YAML_KEY_PROJECT,
+ "filetype": "manifest"}))
}
// process deployment file
@@ -194,8 +197,11 @@ func (deployer *ServiceDeployer) ConstructDeploymentPlan() error {
// (TODO) delete this warning after deprecating application in deployment file
if deploymentReader.DeploymentDescriptor.Application.Name != "" {
- wskprint.PrintOpenWhiskWarning(wski18n.T(wski18n.ID_WARN_DEPRECATED_KEY_REPLACED,
- map[string]interface{}{"oldkey": "application", "newkey": "project", "filetype": "deployment"}))
+ wskprint.PrintOpenWhiskWarning(wski18n.T(wski18n.ID_WARN_DEPRECATED_KEY_REPLACED_X_oldkey_X_filetype_X_newkey_X,
+ map[string]interface{}{
+ "oldkey": parsers.YAML_KEY_APPLICATION,
+ "newkey": parsers.YAML_KEY_PROJECT,
+ "filetype": "deployment"}))
}
// compare the name of the project
@@ -204,7 +210,7 @@ func (deployer *ServiceDeployer) ConstructDeploymentPlan() error {
if projectNameDeploy != projectName {
errorString := wski18n.T(wski18n.ID_ERR_MISMATCH_NAME_X_key_X_dname_X_dpath_X_mname_X_moath_X,
map[string]interface{}{
- "key": "project",
+ "key": parsers.YAML_KEY_PROJECT,
"dname": projectNameDeploy,
"dpath": deployer.DeploymentPath,
"mname": projectName,
@@ -261,8 +267,11 @@ func (deployer *ServiceDeployer) ConstructUnDeploymentPlan() (*DeploymentProject
// (TODO) delete this warning after deprecating application in manifest file
if manifest.Application.Name != "" {
- wskprint.PrintOpenWhiskWarning(wski18n.T(wski18n.ID_WARN_DEPRECATED_KEY_REPLACED,
- map[string]interface{}{"oldkey": "application", "newkey": "project", "filetype": "manifest"}))
+ wskprint.PrintOpenWhiskWarning(wski18n.T(wski18n.ID_WARN_DEPRECATED_KEY_REPLACED_X_oldkey_X_filetype_X_newkey_X,
+ map[string]interface{}{
+ "oldkey": parsers.YAML_KEY_APPLICATION,
+ "newkey": parsers.YAML_KEY_PROJECT,
+ "filetype": "manifest"}))
}
// process deployment file
@@ -275,8 +284,11 @@ func (deployer *ServiceDeployer) ConstructUnDeploymentPlan() (*DeploymentProject
// (TODO) delete this warning after deprecating application in deployment file
if deploymentReader.DeploymentDescriptor.Application.Name != "" {
- wskprint.PrintOpenWhiskWarning(wski18n.T(wski18n.ID_WARN_DEPRECATED_KEY_REPLACED,
- map[string]interface{}{"oldkey": "application", "newkey": "project", "filetype": "deployment"}))
+ wskprint.PrintOpenWhiskWarning(wski18n.T(wski18n.ID_WARN_DEPRECATED_KEY_REPLACED_X_oldkey_X_filetype_X_newkey_X,
+ map[string]interface{}{
+ "oldkey": parsers.YAML_KEY_APPLICATION,
+ "newkey": parsers.YAML_KEY_PROJECT,
+ "filetype": "deployment"}))
}
// compare the name of the application
@@ -285,7 +297,7 @@ func (deployer *ServiceDeployer) ConstructUnDeploymentPlan() (*DeploymentProject
if projectNameDeploy != projectName {
errorString := wski18n.T(wski18n.ID_ERR_MISMATCH_NAME_X_key_X_dname_X_dpath_X_mname_X_moath_X,
map[string]interface{}{
- "key": "project",
+ "key": parsers.YAML_KEY_PROJECT,
"dname": projectNameDeploy,
"dpath": deployer.DeploymentPath,
"mname": projectName,
@@ -530,9 +542,9 @@ func (deployer *ServiceDeployer) RefreshManagedActions(packageName string, ma ma
output := wski18n.T(wski18n.ID_MSG_MANAGED_FOUND_DELETED_X_key_X_name_X_project_X,
map[string]interface{}{
- "key": "action",
- "name": actionName,
- "project": aa[utils.OW_PROJECT_NAME]})
+ wski18n.KEY_KEY: parsers.YAML_KEY_ACTION,
+ wski18n.KEY_NAME: actionName,
+ wski18n.KEY_PROJECT: aa[utils.OW_PROJECT_NAME]})
wskprint.PrintOpenWhiskWarning(output)
var err error
@@ -571,7 +583,7 @@ func (deployer *ServiceDeployer) RefreshManagedTriggers(ma map[string]interface{
// we have found a trigger which was earlier part of the current project
output := wski18n.T(wski18n.ID_MSG_MANAGED_FOUND_DELETED_X_key_X_name_X_project_X,
map[string]interface{}{
- "key": "trigger",
+ "key": parsers.YAML_KEY_TRIGGER,
"name": trigger.Name,
"project": ma[utils.OW_PROJECT_NAME]})
wskprint.PrintOpenWhiskWarning(output)
@@ -623,7 +635,7 @@ func (deployer *ServiceDeployer) RefreshManagedPackages(ma map[string]interface{
if pa[utils.OW_PROJECT_NAME] == ma[utils.OW_PROJECT_NAME] && pa[utils.OW_PROJECT_HASH] != ma[utils.OW_PROJECT_HASH] {
output := wski18n.T(wski18n.ID_MSG_MANAGED_FOUND_DELETED_X_key_X_name_X_project_X,
map[string]interface{}{
- "key": "package",
+ "key": parsers.YAML_KEY_PACKAGE,
"name": pkg.Name,
"project": pa[utils.OW_PROJECT_NAME]})
wskprint.PrintOpenWhiskWarning(output)
@@ -739,13 +751,13 @@ func (deployer *ServiceDeployer) createBinding(packa *whisk.BindingPackage) erro
return createWhiskClientError(err.(*whisk.WskError), response, "package binding", true)
}
- displayPostprocessingInfo("package binding", packa.Name, true)
+ displayPostprocessingInfo(parsers.PACKAGE_BINDING, packa.Name, true)
return nil
}
func (deployer *ServiceDeployer) createPackage(packa *whisk.Package) error {
- displayPreprocessingInfo("package", packa.Name, true)
+ displayPreprocessingInfo(parsers.YAML_KEY_PACKAGE, packa.Name, true)
var err error
var response *http.Response
@@ -754,16 +766,16 @@ func (deployer *ServiceDeployer) createPackage(packa *whisk.Package) error {
return err
})
if err != nil {
- return createWhiskClientError(err.(*whisk.WskError), response, "package", true)
+ return createWhiskClientError(err.(*whisk.WskError), response, parsers.YAML_KEY_PACKAGE, true)
}
- displayPostprocessingInfo("package", packa.Name, true)
+ displayPostprocessingInfo(parsers.YAML_KEY_PACKAGE, packa.Name, true)
return nil
}
func (deployer *ServiceDeployer) createTrigger(trigger *whisk.Trigger) error {
- displayPreprocessingInfo("trigger", trigger.Name, true)
+ displayPreprocessingInfo(parsers.YAML_KEY_TRIGGER, trigger.Name, true)
var err error
var response *http.Response
@@ -772,16 +784,16 @@ func (deployer *ServiceDeployer) createTrigger(trigger *whisk.Trigger) error {
return err
})
if err != nil {
- return createWhiskClientError(err.(*whisk.WskError), response, "trigger", true)
+ return createWhiskClientError(err.(*whisk.WskError), response, parsers.YAML_KEY_TRIGGER, true)
}
- displayPostprocessingInfo("trigger", trigger.Name, true)
+ displayPostprocessingInfo(parsers.YAML_KEY_TRIGGER, trigger.Name, true)
return nil
}
func (deployer *ServiceDeployer) createFeedAction(trigger *whisk.Trigger, feedName string) error {
- displayPreprocessingInfo("trigger feed", trigger.Name, true)
+ displayPreprocessingInfo(parsers.TRIGGER_FEED, trigger.Name, true)
// to hold and modify trigger parameters, not passed by ref?
params := make(map[string]interface{})
@@ -791,6 +803,7 @@ func (deployer *ServiceDeployer) createFeedAction(trigger *whisk.Trigger, feedNa
params[keyVal.Key] = keyVal.Value
}
+ // TODO() defone keys and lifecylce operation names as const
params["authKey"] = deployer.ClientConfig.AuthToken
params["lifecycleEvent"] = "CREATE"
params["triggerName"] = "/" + deployer.Client.Namespace + "/" + trigger.Name
@@ -821,7 +834,7 @@ func (deployer *ServiceDeployer) createFeedAction(trigger *whisk.Trigger, feedNa
return err
})
if err != nil {
- return createWhiskClientError(err.(*whisk.WskError), response, "trigger feed", true)
+ return createWhiskClientError(err.(*whisk.WskError), response, parsers.TRIGGER_FEED, true)
} else {
qName, err := utils.ParseQualifiedName(feedName, deployer.ClientConfig.Namespace)
@@ -846,16 +859,16 @@ func (deployer *ServiceDeployer) createFeedAction(trigger *whisk.Trigger, feedNa
return err
})
- return createWhiskClientError(err.(*whisk.WskError), response, "trigger feed", false)
+ return createWhiskClientError(err.(*whisk.WskError), response, parsers.TRIGGER_FEED, false)
}
}
- displayPostprocessingInfo("trigger feed", trigger.Name, true)
+ displayPostprocessingInfo(parsers.TRIGGER_FEED, trigger.Name, true)
return nil
}
func (deployer *ServiceDeployer) createRule(rule *whisk.Rule) error {
- displayPreprocessingInfo("rule", rule.Name, true)
+ displayPreprocessingInfo(parsers.YAML_KEY_RULE, rule.Name, true)
// The rule's trigger should include the namespace with pattern /namespace/trigger
rule.Trigger = deployer.getQualifiedName(rule.Trigger.(string), deployer.ClientConfig.Namespace)
@@ -879,10 +892,10 @@ func (deployer *ServiceDeployer) createRule(rule *whisk.Rule) error {
})
if err != nil {
- return createWhiskClientError(err.(*whisk.WskError), response, "rule", true)
+ return createWhiskClientError(err.(*whisk.WskError), response, parsers.YAML_KEY_RULE, true)
}
- displayPostprocessingInfo("rule", rule.Name, true)
+ displayPostprocessingInfo(parsers.YAML_KEY_RULE, rule.Name, true)
return nil
}
@@ -894,7 +907,7 @@ func (deployer *ServiceDeployer) createAction(pkgname string, action *whisk.Acti
action.Name = strings.Join([]string{pkgname, action.Name}, "/")
}
- displayPreprocessingInfo("action", action.Name, true)
+ displayPreprocessingInfo(parsers.YAML_KEY_ACTION, action.Name, true)
var err error
var response *http.Response
@@ -904,17 +917,17 @@ func (deployer *ServiceDeployer) createAction(pkgname string, action *whisk.Acti
})
if err != nil {
- return createWhiskClientError(err.(*whisk.WskError), response, "action", true)
+ return createWhiskClientError(err.(*whisk.WskError), response, parsers.YAML_KEY_ACTION, true)
}
- displayPostprocessingInfo("action", action.Name, true)
+ displayPostprocessingInfo(parsers.YAML_KEY_ACTION, action.Name, true)
return nil
}
// create api (API Gateway functionality)
func (deployer *ServiceDeployer) createApi(api *whisk.ApiCreateRequest) error {
- displayPreprocessingInfo("api", api.ApiDoc.ApiName, true)
+ displayPreprocessingInfo(parsers.YAML_KEY_API, api.ApiDoc.ApiName, true)
var err error
var response *http.Response
@@ -926,10 +939,10 @@ func (deployer *ServiceDeployer) createApi(api *whisk.ApiCreateRequest) error {
})
if err != nil {
- return createWhiskClientError(err.(*whisk.WskError), response, "api", true)
+ return createWhiskClientError(err.(*whisk.WskError), response, parsers.YAML_KEY_API, true)
}
- displayPostprocessingInfo("api", api.ApiDoc.ApiName, true)
+ displayPostprocessingInfo(parsers.YAML_KEY_API, api.ApiDoc.ApiName, true)
return nil
}
@@ -1043,7 +1056,7 @@ func (deployer *ServiceDeployer) UnDeployDependencies() error {
return err
})
if err != nil {
- return createWhiskClientError(err.(*whisk.WskError), response, "package binding", false)
+ return createWhiskClientError(err.(*whisk.WskError), response, parsers.PACKAGE_BINDING, false)
}
}
}
@@ -1136,7 +1149,7 @@ func (deployer *ServiceDeployer) UnDeployRules(deployment *DeploymentProject) er
func (deployer *ServiceDeployer) deletePackage(packa *whisk.Package) error {
- displayPreprocessingInfo("package", packa.Name, false)
+ displayPreprocessingInfo(parsers.YAML_KEY_PACKAGE, packa.Name, false)
if _, _, ok := deployer.Client.Packages.Get(packa.Name); ok == nil {
var err error
@@ -1147,16 +1160,16 @@ func (deployer *ServiceDeployer) deletePackage(packa *whisk.Package) error {
})
if err != nil {
- return createWhiskClientError(err.(*whisk.WskError), response, "package", false)
+ return createWhiskClientError(err.(*whisk.WskError), response, parsers.YAML_KEY_PACKAGE, false)
}
}
- displayPostprocessingInfo("package", packa.Name, false)
+ displayPostprocessingInfo(parsers.YAML_KEY_PACKAGE, packa.Name, false)
return nil
}
func (deployer *ServiceDeployer) deleteTrigger(trigger *whisk.Trigger) error {
- displayPreprocessingInfo("trigger", trigger.Name, false)
+ displayPreprocessingInfo(parsers.YAML_KEY_TRIGGER, trigger.Name, false)
var err error
var response *http.Response
@@ -1166,16 +1179,17 @@ func (deployer *ServiceDeployer) deleteTrigger(trigger *whisk.Trigger) error {
})
if err != nil {
- return createWhiskClientError(err.(*whisk.WskError), response, "trigger", false)
+ return createWhiskClientError(err.(*whisk.WskError), response, parsers.YAML_KEY_TRIGGER, false)
}
- displayPostprocessingInfo("trigger", trigger.Name, false)
+ displayPostprocessingInfo(parsers.YAML_KEY_TRIGGER, trigger.Name, false)
return nil
}
func (deployer *ServiceDeployer) deleteFeedAction(trigger *whisk.Trigger, feedName string) error {
params := make(whisk.KeyValueArr, 0)
+ // TODO() define keys and operations as const
params = append(params, whisk.KeyValue{Key: "authKey", Value: deployer.ClientConfig.AuthToken})
params = append(params, whisk.KeyValue{Key: "lifecycleEvent", Value: "DELETE"})
params = append(params, whisk.KeyValue{Key: "triggerName", Value: "/" + deployer.Client.Namespace + "/" + trigger.Name})
@@ -1202,7 +1216,7 @@ func (deployer *ServiceDeployer) deleteFeedAction(trigger *whisk.Trigger, feedNa
if err != nil {
wskErr := err.(*whisk.WskError)
- errString := wski18n.T("Failed to invoke the feed when deleting trigger feed with error message: {{.err}} and error code: {{.code}}.\n",
+ errString := wski18n.T(wski18n.ID_ERR_FEED_INVOKE_X_err_X_code_X,
map[string]interface{}{"err": wskErr.Error(), "code": strconv.Itoa(wskErr.ExitCode)})
whisk.Debug(whisk.DbgError, errString)
return wskderrors.NewWhiskClientError(wskErr.Error(), wskErr.ExitCode, response)
@@ -1216,7 +1230,7 @@ func (deployer *ServiceDeployer) deleteFeedAction(trigger *whisk.Trigger, feedNa
})
if err != nil {
- return createWhiskClientError(err.(*whisk.WskError), response, "trigger", false)
+ return createWhiskClientError(err.(*whisk.WskError), response, parsers.YAML_KEY_TRIGGER, false)
}
}
@@ -1225,7 +1239,7 @@ func (deployer *ServiceDeployer) deleteFeedAction(trigger *whisk.Trigger, feedNa
func (deployer *ServiceDeployer) deleteRule(rule *whisk.Rule) error {
- displayPreprocessingInfo("rule", rule.Name, false)
+ displayPreprocessingInfo(parsers.YAML_KEY_RULE, rule.Name, false)
var err error
var response *http.Response
@@ -1235,9 +1249,9 @@ func (deployer *ServiceDeployer) deleteRule(rule *whisk.Rule) error {
})
if err != nil {
- return createWhiskClientError(err.(*whisk.WskError), response, "rule", false)
+ return createWhiskClientError(err.(*whisk.WskError), response, parsers.YAML_KEY_RULE, false)
}
- displayPostprocessingInfo("rule", rule.Name, false)
+ displayPostprocessingInfo(parsers.YAML_KEY_RULE, rule.Name, false)
return nil
}
@@ -1249,7 +1263,7 @@ func (deployer *ServiceDeployer) deleteAction(pkgname string, action *whisk.Acti
action.Name = strings.Join([]string{pkgname, action.Name}, "/")
}
- displayPreprocessingInfo("action", action.Name, false)
+ displayPreprocessingInfo(parsers.YAML_KEY_ACTION, action.Name, false)
if _, _, ok := deployer.Client.Actions.Get(action.Name); ok == nil {
var err error
@@ -1260,11 +1274,11 @@ func (deployer *ServiceDeployer) deleteAction(pkgname string, action *whisk.Acti
})
if err != nil {
- return createWhiskClientError(err.(*whisk.WskError), response, "action", false)
+ return createWhiskClientError(err.(*whisk.WskError), response, parsers.YAML_KEY_ACTION, false)
}
}
- displayPostprocessingInfo("action", action.Name, false)
+ displayPostprocessingInfo(parsers.YAML_KEY_ACTION, action.Name, false)
return nil
}
@@ -1311,6 +1325,7 @@ func (deployer *ServiceDeployer) printDeploymentAssets(assets *DeploymentProject
// TODO() move to separate function and suppress using some flag
wskprint.PrintlnOpenWhiskOutput(" ____ ___ _ _ _ _ _\n /\\ \\ / _ \\ _ __ ___ _ __ | | | | |__ (_)___| | __\n /\\ /__\\ \\ | | | | '_ \\ / _ \\ '_ \\| | | | '_ \\| / __| |/ /\n / \\____ \\ / | |_| | |_) | __/ | | | |/\\| | | | | \\__ \\ <\n \\ \\ / \\/ \\___/| .__/ \\___|_| |_|__/\\__|_| |_|_|___/_|\\_\\ \n \\___\\/ |_|\n")
+ // TODO() review format
wskprint.PrintlnOpenWhiskOutput("Packages:")
for _, pack := range assets.Packages {
wskprint.PrintlnOpenWhiskOutput("Name: " + pack.Package.Name)
diff --git a/parsers/manifest_parser.go b/parsers/manifest_parser.go
index 5aac11f..82a4b52 100644
--- a/parsers/manifest_parser.go
+++ b/parsers/manifest_parser.go
@@ -23,14 +23,13 @@ import (
"os"
"path"
"strings"
-
"encoding/base64"
-
"fmt"
+ "gopkg.in/yaml.v2"
+
"github.com/apache/incubator-openwhisk-client-go/whisk"
"github.com/apache/incubator-openwhisk-wskdeploy/utils"
"github.com/apache/incubator-openwhisk-wskdeploy/wski18n"
- "gopkg.in/yaml.v2"
"github.com/apache/incubator-openwhisk-wskdeploy/wskderrors"
"github.com/apache/incubator-openwhisk-wskdeploy/wskenv"
"github.com/apache/incubator-openwhisk-wskdeploy/wskprint"
@@ -78,6 +77,7 @@ func (dm *YAMLParser) Unmarshal(input []byte, manifest *YAML) error {
func (dm *YAMLParser) marshal(manifest *YAML) (output []byte, err error) {
data, err := yaml.Marshal(manifest)
if err != nil {
+ // TODO() i18n
fmt.Printf("err happened during marshal :%v", err)
return nil, err
}
@@ -136,7 +136,8 @@ func (dm *YAMLParser) ComposeDependencies(pkg Package, projectPath string, fileP
for key, dependency := range pkg.Dependencies {
version := dependency.Version
if version == "" {
- version = "master"
+ // TODO() interactive ask for branch, AND consider YAML specification to allow key for branch
+ version = YAML_VALUE_BRANCH_MASTER
}
location := dependency.Location
@@ -151,6 +152,7 @@ func (dm *YAMLParser) ComposeDependencies(pkg Package, projectPath string, fileP
isBinding = true
} else if utils.LocationIsGithub(location) {
+ // TODO() define const for the protocol prefix, etc.
if !strings.HasPrefix(location, "https://") && !strings.HasPrefix(location, "http://") {
location = "https://" + dependency.Location
}
@@ -240,23 +242,42 @@ func (dm *YAMLParser) ComposePackage(pkg Package, packageName string, filePath s
//Version is a mandatory value
//If it is an empty string, it will be set to default value
//And print an warning message
+ // TODO(#673) implement STRICT flag
if pkg.Version == "" {
- warningString := wski18n.T("WARNING: Mandatory field Package Version must be set.\n")
- whisk.Debug(whisk.DbgWarn, warningString)
- warningString = wski18n.T("WARNING: Package Version is not saved in the current wskdeploy version.\n")
- whisk.Debug(whisk.DbgWarn, warningString)
- pkg.Version = "0.0.1"
+ warningString := wski18n.T(
+ wski18n.ID_WARN_MISSING_MANDATORY_KEY_X_key_X_value_X,
+ map[string]interface{}{
+ wski18n.KEY_KEY: PACKAGE_VERSION,
+ wski18n.KEY_VALUE: DEFAULT_PACKAGE_VERSION})
+ wskprint.PrintOpenWhiskWarning(warningString)
+
+ warningString = wski18n.T(
+ wski18n.ID_WARN_KEYVALUE_NOT_SAVED_X_key_X,
+ map[string]interface{}{wski18n.KEY_KEY: PACKAGE_VERSION})
+
+ wskprint.PrintOpenWhiskWarning(warningString)
+ pkg.Version = DEFAULT_PACKAGE_VERSION
}
//License is a mandatory value
//set license to unknown if it is an empty string
//And print an warning message
+ // TODO(#673) implement STRICT flag
if pkg.License == "" {
- warningString := wski18n.T("WARNING: Mandatory field Package License must be set.\n")
- whisk.Debug(whisk.DbgWarn, warningString)
- warningString = wski18n.T("WARNING: Package License is not saved in the current wskdeploy version.\n")
- whisk.Debug(whisk.DbgWarn, warningString)
- pkg.License = "unlicensed"
+ warningString := wski18n.T(
+ wski18n.ID_WARN_MISSING_MANDATORY_KEY_X_key_X_value_X,
+ map[string]interface{}{
+ wski18n.KEY_KEY: PACKAGE_LICENSE,
+ wski18n.KEY_VALUE: DEFAULT_PACKAGE_LICENSE})
+ wskprint.PrintOpenWhiskWarning(warningString)
+
+ warningString = wski18n.T(
+ wski18n.ID_WARN_KEYVALUE_NOT_SAVED_X_key_X,
+ map[string]interface{}{wski18n.KEY_KEY: PACKAGE_VERSION})
+
+ wskprint.PrintOpenWhiskWarning(warningString)
+
+ pkg.License = DEFAULT_PACKAGE_LICENSE
} else {
utils.CheckLicense(pkg.License)
}
@@ -334,7 +355,7 @@ func (dm *YAMLParser) ComposeSequences(namespace string, sequences map[string]Se
for key, sequence := range sequences {
wskaction := new(whisk.Action)
wskaction.Exec = new(whisk.Exec)
- wskaction.Exec.Kind = "sequence"
+ wskaction.Exec.Kind = YAML_KEY_SEQUENCE
actionList := strings.Split(sequence.Actions, ",")
var components []string
@@ -402,6 +423,7 @@ func (dm *YAMLParser) ComposeActionsFromAllPackages(manifest *YAML, filePath str
func (dm *YAMLParser) ComposeActions(filePath string, actions map[string]Action, packageName string, ma whisk.KeyValue) ([]utils.ActionRecord, error) {
+ // TODO() i18n
const RUNTIME_ERR_MESSAGE = "Please specify any of the supported runtime for zip actions in manifest YAML."
var errorParser error
var ext string
@@ -431,6 +453,7 @@ func (dm *YAMLParser) ComposeActions(filePath string, actions map[string]Action,
filePath := strings.TrimRight(filePath, splitFilePath[len(splitFilePath)-1]) + action.Function
if utils.IsDirectory(filePath) {
+ // TODO() define ext as const
zipName := filePath + ".zip"
err := utils.NewZipWritter(filePath, zipName).Zip()
if err != nil {
@@ -459,6 +482,7 @@ func (dm *YAMLParser) ComposeActions(filePath string, actions map[string]Action,
// and its not explicitly specified in the manifest YAML file
// and action source is not a zip file
if len(kind) == 0 && len(action.Runtime) == 0 && ext != utils.ZIP_FILE_EXTENSION {
+ // TODO() i18n
errMessage := "ERROR: Failed to discover runtime from the action source files. " + RUNTIME_ERR_MESSAGE
return nil, wskderrors.NewInvalidRuntimeError(errMessage, splitFilePath[len(splitFilePath)-1], action.Name, "Not Specified in Manifest YAML", utils.ListOfSupportedRuntimes(utils.SupportedRunTimes))
}
@@ -475,6 +499,7 @@ func (dm *YAMLParser) ComposeActions(filePath string, actions map[string]Action,
code = base64.StdEncoding.EncodeToString([]byte(dat))
}
if ext == utils.ZIP_FILE_EXTENSION && len(action.Runtime) == 0 {
+ // TODO() i18n
errMessage := "ERROR: Runtime is missing for zip action. " + RUNTIME_ERR_MESSAGE
return nil, wskderrors.NewInvalidRuntimeError(errMessage, splitFilePath[len(splitFilePath)-1], action.Name, "Not Specified in Manifest YAML", utils.ListOfSupportedRuntimes(utils.SupportedRunTimes))
}
@@ -581,6 +606,7 @@ func (dm *YAMLParser) ComposeActions(filePath string, actions map[string]Action,
// TODO{} add outputs as annotations (work to discuss officially supporting for compositions)
if len(keyValArr) > 0 {
+ // TODO() ?
//wskaction.Annotations // TBD
}
@@ -605,6 +631,7 @@ func (dm *YAMLParser) ComposeActions(filePath string, actions map[string]Action,
/*
* Web Export
*/
+ // TODO() add boolean value const
if action.Webexport == "true" {
wskaction.Annotations, errorParser = utils.WebAction("yes", listOfAnnotations, false)
if errorParser != nil {
@@ -617,36 +644,40 @@ func (dm *YAMLParser) ComposeActions(filePath string, actions map[string]Action,
*/
if action.Limits!=nil {
wsklimits := new(whisk.Limits)
+
+ // TODO() use LIMITS_SUPPORTED in yamlparser to enumerata through instead of hardcoding
+ // perhaps change into a tuple
if utils.LimitsTimeoutValidation(action.Limits.Timeout) {
wsklimits.Timeout = action.Limits.Timeout
} else {
warningString := wski18n.T(wski18n.ID_MSG_ACTION_LIMIT_IGNORED_X_limit_X,
- map[string]interface{}{"limit": "timeout"})
+ map[string]interface{}{wski18n.KEY_LIMIT: LIMIT_VALUE_TIMEOUT})
wskprint.PrintOpenWhiskWarning(warningString)
}
if utils.LimitsMemoryValidation(action.Limits.Memory) {
wsklimits.Memory = action.Limits.Memory
} else {
warningString := wski18n.T(wski18n.ID_MSG_ACTION_LIMIT_IGNORED_X_limit_X,
- map[string]interface{}{"limit": "memorySize"})
+ map[string]interface{}{wski18n.KEY_LIMIT: LIMIT_VALUE_MEMORY_SIZE})
wskprint.PrintOpenWhiskWarning(warningString)
}
if utils.LimitsLogsizeValidation(action.Limits.Logsize) {
wsklimits.Logsize = action.Limits.Logsize
} else {
warningString := wski18n.T(wski18n.ID_MSG_ACTION_LIMIT_IGNORED_X_limit_X,
- map[string]interface{}{"limit": "logSize"})
+ map[string]interface{}{wski18n.KEY_LIMIT: LIMIT_VALUE_LOG_SIZE})
wskprint.PrintOpenWhiskWarning(warningString)
}
if wsklimits.Timeout!=nil || wsklimits.Memory!=nil || wsklimits.Logsize!=nil {
wskaction.Limits = wsklimits
}
- //emit warning errors if these limits are not nil
- utils.NotSupportLimits(action.Limits.ConcurrentActivations,"concurrentActivations")
- utils.NotSupportLimits(action.Limits.UserInvocationRate,"userInvocationRate")
- utils.NotSupportLimits(action.Limits.CodeSize,"codeSize")
- utils.NotSupportLimits(action.Limits.ParameterSize,"parameterSize")
+ // TODO() use LIMITS_UNSUPPORTED in yamlparser to enumerata through instead of hardcoding
+ // emit warning errors if these limits are not nil
+ utils.NotSupportLimits(action.Limits.ConcurrentActivations, LIMIT_VALUE_CONCURRENT_ACTIVATIONS)
+ utils.NotSupportLimits(action.Limits.UserInvocationRate, LIMIT_VALUE_USER_INVOCATION_RATE)
+ utils.NotSupportLimits(action.Limits.CodeSize, LIMIT_VALUE_CODE_SIZE)
+ utils.NotSupportLimits(action.Limits.ParameterSize, LIMIT_VALUE_PARAMETER_SIZE)
}
wskaction.Name = key
@@ -696,10 +727,16 @@ func (dm *YAMLParser) ComposeTriggers(filePath string, pkg Package, ma whisk.Key
pub := false
wsktrigger.Publish = &pub
- //print warning information when .Source is not empty
+ // print warning information when .Source key's value is not empty
if trigger.Source != "" {
- warningString := wski18n.T("WARNING: The 'source' YAML key in trigger entity is deprecated. Please use 'feed' instead as described in specifications.\n")
- whisk.Debug(whisk.DbgWarn, warningString)
+ // TODO() i18n use const for keys and values on string
+ warningString := wski18n.T(
+ wski18n.ID_WARN_DEPRECATED_KEY_REPLACED_X_oldkey_X_filetype_X_newkey_X,
+ map[string]interface{}{
+ wski18n.KEY_OLD: "source",
+ wski18n.KEY_NEW: YAML_KEY_FEED,
+ wski18n.KEY_FILE_TYPE: "manifest"})
+ wskprint.PrintOpenWhiskWarning(warningString)
}
if trigger.Feed == "" {
trigger.Feed = trigger.Source
@@ -709,7 +746,7 @@ func (dm *YAMLParser) ComposeTriggers(filePath string, pkg Package, ma whisk.Key
if trigger.Feed != "" {
var keyVal whisk.KeyValue
- keyVal.Key = "feed"
+ keyVal.Key = YAML_KEY_FEED
keyVal.Value = trigger.Feed
keyValArr = append(keyValArr, keyVal)
diff --git a/parsers/yamlparser.go b/parsers/yamlparser.go
index 58cd46b..fd7a24c 100644
--- a/parsers/yamlparser.go
+++ b/parsers/yamlparser.go
@@ -22,7 +22,66 @@ import (
"github.com/apache/incubator-openwhisk-wskdeploy/wskenv"
)
-// structs that denotes the sample manifest.yaml, wrapped yaml.v2
+// YAML schema key names
+const(
+ YAML_KEY_PROJECT = "project"
+ YAML_KEY_APPLICATION = "application" // deprecated
+ YAML_KEY_PACKAGE = "package"
+ YAML_KEY_ACTION = "action"
+ YAML_KEY_TRIGGER = "trigger"
+ YAML_KEY_RULE = "rule"
+ YAML_KEY_FEED = "feed"
+ YAML_KEY_API = "api"
+ YAML_KEY_SEQUENCE = "sequence"
+)
+
+// descriptive key names
+const (
+ PROJECT_NAME = "project name"
+ PACKAGE_BINDING = "package binding"
+ PACKAGE_VERSION = "package version"
+ PACKAGE_LICENSE = "package license"
+ TRIGGER_FEED = "trigger feed"
+)
+
+// YAML schema key values
+const(
+ YAML_VALUE_BRANCH_MASTER = "master"
+)
+
+// default values
+const(
+ DEFAULT_PACKAGE_LICENSE = "unlicensed"
+ DEFAULT_PACKAGE_VERSION = "0.0.1"
+)
+
+// Known Limit values
+const(
+ // supported
+ LIMIT_VALUE_TIMEOUT = "timeout"
+ LIMIT_VALUE_MEMORY_SIZE = "memorySize"
+ LIMIT_VALUE_LOG_SIZE = "logSize"
+ // unsupported
+ LIMIT_VALUE_CONCURRENT_ACTIVATIONS = "concurrentActivations"
+ LIMIT_VALUE_USER_INVOCATION_RATE = "userInvocationRate"
+ LIMIT_VALUE_CODE_SIZE = "codeSize"
+ LIMIT_VALUE_PARAMETER_SIZE = "parameterSize"
+)
+
+var LIMITS_SUPPORTED = [](string){
+ LIMIT_VALUE_TIMEOUT,
+ LIMIT_VALUE_MEMORY_SIZE,
+ LIMIT_VALUE_LOG_SIZE,
+}
+
+var LIMITS_UNSUPPORTED = [](string){
+ LIMIT_VALUE_CONCURRENT_ACTIVATIONS,
+ LIMIT_VALUE_USER_INVOCATION_RATE,
+ LIMIT_VALUE_CODE_SIZE,
+ LIMIT_VALUE_PARAMETER_SIZE,
+}
+
+// structs that denote the sample manifest.yaml, wrapped yaml.v2
func NewYAMLParser() *YAMLParser {
return &YAMLParser{}
}
diff --git a/utils/validation.go b/utils/validation.go
index 1aaef6a..9e17088 100644
--- a/utils/validation.go
+++ b/utils/validation.go
@@ -19,10 +19,11 @@
package utils
import (
+ "strings"
"encoding/json"
"github.com/apache/incubator-openwhisk-client-go/whisk"
"github.com/apache/incubator-openwhisk-wskdeploy/wski18n"
- "strings"
+ "github.com/apache/incubator-openwhisk-wskdeploy/wskprint"
)
var LocalLicenseRecords = map[string][]string{
@@ -61,10 +62,13 @@ var license_json = LicenseJSON{}
//Check local data record at first
//Then check remote json data
func CheckLicense(license string) bool {
+ // TODO(#673) Strict flag should cause an error to be generatd
if !LicenseLocalValidation(license) && !LicenseRemoteValidation(license) {
- warningString := wski18n.T("WARNING: License {{.licenseID}} is not a valid one.\n",
- map[string]interface{}{"licenseID": license})
- whisk.Debug(whisk.DbgWarn, warningString)
+ warningString := wski18n.T(
+ wski18n.ID_WARN_KEYVALUE_INVALID,
+ map[string]interface{}{
+ wski18n.KEY_KEY: license})
+ wskprint.PrintlnOpenWhiskWarning(warningString)
return false
}
return true
@@ -135,8 +139,7 @@ func LimitsTimeoutValidation(timeout *int) bool {
return true
}
if *timeout < 100 || *timeout > 300000 {
- errString := wski18n.T("timeout of limits in manifest should be an integer between 100 and 300000.\n")
- whisk.Debug(whisk.DbgError, errString)
+ wskprint.PrintlnOpenWhiskWarning(wski18n.T(wski18n.ID_WARN_LIMITS_TIMEOUT))
return false
}
return true
@@ -149,8 +152,7 @@ func LimitsMemoryValidation(memory *int) bool {
return true
}
if *memory < 128 || *memory > 512 {
- errString := wski18n.T("memorySize of limits in manifest should be an integer between 128 and 512.\n")
- whisk.Debug(whisk.DbgError, errString)
+ wskprint.PrintlnOpenWhiskWarning(wski18n.T(wski18n.ID_WARN_LIMITS_MEMORY_SIZE))
return false
}
return true
@@ -163,8 +165,7 @@ func LimitsLogsizeValidation(logsize *int) bool {
return true
}
if *logsize < 0 || *logsize > 10 {
- errString := wski18n.T("logSize of limits in manifest should be an integer between 0 and 10.\n")
- whisk.Debug(whisk.DbgError, errString)
+ wskprint.PrintlnOpenWhiskWarning(wski18n.T(wski18n.ID_WARN_LIMITS_LOG_SIZE))
return false
}
return true
@@ -172,7 +173,9 @@ func LimitsLogsizeValidation(logsize *int) bool {
func NotSupportLimits(value *int, name string) {
if value != nil {
- warningString := wski18n.T("WARNING: Limits {{.limitname}} is not changable, which will be ignored.\n", map[string]interface{}{"limitname": name})
- whisk.Debug(whisk.DbgWarn, warningString)
+ warningString := wski18n.T(
+ wski18n.ID_WARN_LIMIT_UNCHANGEABLE_X_name_X,
+ map[string]interface{}{wski18n.KEY_NAME: name})
+ wskprint.PrintlnOpenWhiskWarning(warningString)
}
}
diff --git a/wski18n/i18n_ids.go b/wski18n/i18n_ids.go
index cbd7519..af599fa 100644
--- a/wski18n/i18n_ids.go
+++ b/wski18n/i18n_ids.go
@@ -92,8 +92,15 @@ const(
ID_MSG_ACTION_LIMIT_IGNORED_X_limit_X = "msg_action_limit_ignored" // timeout, memorySize, logSize
// warnings
- ID_WARN_DEPRECATED_KEY_REPLACED = "msg_warn_key_deprecated_replaced"
+ ID_WARN_DEPRECATED_KEY_REPLACED_X_oldkey_X_filetype_X_newkey_X = "msg_warn_key_deprecated_replaced"
ID_WARN_WHISK_PROPS_DEPRECATED = "msg_warn_whisk_properties"
+ ID_WARN_MISSING_MANDATORY_KEY_X_key_X_value_X = "msg_warn_missing_mandatory_key"
+ ID_WARN_KEYVALUE_NOT_SAVED_X_key_X = "msg_warn_key_value_not_saved"
+ ID_WARN_KEYVALUE_INVALID = "msg_warn_invalid_key_value"
+ ID_WARN_LIMITS_TIMEOUT = "msg_warn_limits_timeout"
+ ID_WARN_LIMITS_MEMORY_SIZE = "msg_warn_limits_memory_size"
+ ID_WARN_LIMITS_LOG_SIZE = "msg_warn_limits_memory_log_size"
+ ID_WARN_LIMIT_UNCHANGEABLE_X_name_X = "msg_warn_limit_changeable"
// Errors
ID_ERR_GET_RUNTIMES_X_err_X = "msg_err_get_runtimes"
@@ -101,7 +108,32 @@ const(
ID_ERR_MISMATCH_NAME_X_key_X_dname_X_dpath_X_mname_X_moath_X = "msg_err_mismatch_name_project"
ID_ERR_CREATE_ENTITY_X_key_X_err_X_code_X = "msg_err_create_entity"
ID_ERR_DELETE_ENTITY_X_key_X_err_X_code_X = "msg_err_delete_entity"
+ ID_ERR_FEED_INVOKE_X_err_X_code_X = "msg_err_feed_invoke"
+)
+// Known keys used for text replacement in i18n translated strings
+const(
+ KEY_KEY = "key"
+ KEY_VALUE = "value"
+ KEY_NAME = "name"
+ KEY_CODE = "code"
+ KEY_ERR = "err"
+ KEY_PROJECT = "project"
+ KEY_ACTION = "action"
+ KEY_LIMIT = "limit"
+ KEY_HOST = "host"
+ KEY_SOURCE = "source"
+ KEY_NAMESPACE = "namespace"
+ KEY_PATH = "path"
+ KEY_EXTENTION = "ext"
+ KEY_RUNTIME = "runtime"
+ KEY_DEPLOYMENT_NAME = "dname"
+ KEY_DEPLOYMENT_PATH = "dpath"
+ KEY_MANIFEST_NAME = "mname"
+ KEY_MANIFEST_PATH = "mpath"
+ KEY_OLD = "oldkey"
+ KEY_NEW = "newkey"
+ KEY_FILE_TYPE = "filetype"
)
var I18N_ID_SET = [](string){
@@ -154,8 +186,15 @@ var I18N_ID_SET = [](string){
ID_MSG_PROMPT_APIHOST,
ID_MSG_PROMPT_NAMESPACE,
ID_MSG_ACTION_LIMIT_IGNORED_X_limit_X,
- ID_WARN_DEPRECATED_KEY_REPLACED,
+ ID_WARN_DEPRECATED_KEY_REPLACED_X_oldkey_X_filetype_X_newkey_X,
ID_WARN_WHISK_PROPS_DEPRECATED,
+ ID_WARN_MISSING_MANDATORY_KEY_X_key_X_value_X,
+ ID_WARN_KEYVALUE_NOT_SAVED_X_key_X,
+ ID_WARN_KEYVALUE_INVALID,
+ ID_WARN_LIMITS_TIMEOUT,
+ ID_WARN_LIMITS_MEMORY_SIZE,
+ ID_WARN_LIMITS_LOG_SIZE,
+ ID_WARN_LIMIT_UNCHANGEABLE_X_name_X,
ID_ERR_GET_RUNTIMES_X_err_X,
ID_ERR_MISSING_MANDATORY_KEY_X_key_X,
ID_ERR_MISMATCH_NAME_X_key_X_dname_X_dpath_X_mname_X_moath_X,
diff --git a/wski18n/i18n_ids_test.go b/wski18n/i18n_ids_test.go
index dd2f07b..ac8c828 100644
--- a/wski18n/i18n_ids_test.go
+++ b/wski18n/i18n_ids_test.go
@@ -1,3 +1,5 @@
+// +build unit
+
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
diff --git a/wski18n/i18n_resources.go b/wski18n/i18n_resources.go
index 1317895..1a04185 100644
--- a/wski18n/i18n_resources.go
+++ b/wski18n/i18n_resources.go
@@ -92,12 +92,12 @@ func wski18nResourcesDe_deAllJson() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "wski18n/resources/de_DE.all.json", size: 0, mode: os.FileMode(420), modTime: time.Unix(1505354770, 0)}
+ info := bindataFileInfo{name: "wski18n/resources/de_DE.all.json", size: 0, mode: os.FileMode(420), modTime: time.Unix(1515697090, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
-var _wski18nResourcesEn_usAllJson = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xc4\x59\x51\x6f\x1b\xb9\x11\x7e\xf7\xaf\x18\xe4\xc5\x2d\x60\xa8\xc9\x15\x05\x8a\x00\x45\x61\xd4\x6e\xeb\xde\xc5\x36\xec\xe4\x82\x43\x2e\x58\xd3\xcb\xd9\x15\x4f\x5c\x72\x41\x72\xa5\xe8\x04\xfd\xf7\x62\xc8\xa5\xb4\xb2\xc5\xdd\x95\xe2\x5c\xfc\xb4\x16\x87\xdf\x37\x33\x24\x67\x86\xc3\x4f\x27\x00\xab\x13\x00\x80\x57\x82\xbf\x7a\x0b\xaf\x2a\x5b\x66\xb5\xc1\x42\x7c\xc9\xd0\x18\x6d\x5e\x9d\x85\x51\x67\x98\xb2\x92 [...]
+var _wski18nResourcesEn_usAllJson = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xc4\x59\x51\x6f\xdb\x38\x12\x7e\xcf\xaf\x18\xe4\xa5\x77\x40\xe0\x6b\x7b\x38\xe0\xd0\x97\xc5\x62\xd3\xc5\x66\xbb\x6d\x8a\xa6\xdd\x62\xd1\x16\x0a\x23\x8e\x64\xd6\x14\x29\x90\x94\x5d\xd7\xf0\x7f\x5f\x0c\x29\x4a\x76\x12\x4a\xb2\x93\x62\xf3\xc4\x98\xc3\xf9\x66\x86\xc3\x99\x8f\xd4\xa7\x13\x80\xcd\x09\x00\xc0\xa9\xe0\xa7\x2f\xe0\xb4\xb2\x65\x56\x1b\x2c\xc4\xb7\x0c\x8d\xd1\xe6\xf4\x2c\xcc\x3a\xc3\x94\x95\xcc\x09 [...]
func wski18nResourcesEn_usAllJsonBytes() ([]byte, error) {
return bindataRead(
@@ -112,7 +112,7 @@ func wski18nResourcesEn_usAllJson() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "wski18n/resources/en_US.all.json", size: 9436, mode: os.FileMode(420), modTime: time.Unix(1515552461, 0)}
+ info := bindataFileInfo{name: "wski18n/resources/en_US.all.json", size: 8030, mode: os.FileMode(420), modTime: time.Unix(1515789236, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -132,7 +132,7 @@ func wski18nResourcesEs_esAllJson() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "wski18n/resources/es_ES.all.json", size: 0, mode: os.FileMode(420), modTime: time.Unix(1505354770, 0)}
+ info := bindataFileInfo{name: "wski18n/resources/es_ES.all.json", size: 0, mode: os.FileMode(420), modTime: time.Unix(1515697090, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -152,7 +152,7 @@ func wski18nResourcesFr_frAllJson() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "wski18n/resources/fr_FR.all.json", size: 101, mode: os.FileMode(420), modTime: time.Unix(1505354770, 0)}
+ info := bindataFileInfo{name: "wski18n/resources/fr_FR.all.json", size: 101, mode: os.FileMode(420), modTime: time.Unix(1515697090, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -172,7 +172,7 @@ func wski18nResourcesIt_itAllJson() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "wski18n/resources/it_IT.all.json", size: 0, mode: os.FileMode(420), modTime: time.Unix(1505354770, 0)}
+ info := bindataFileInfo{name: "wski18n/resources/it_IT.all.json", size: 0, mode: os.FileMode(420), modTime: time.Unix(1515697090, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -192,7 +192,7 @@ func wski18nResourcesJa_jaAllJson() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "wski18n/resources/ja_JA.all.json", size: 0, mode: os.FileMode(420), modTime: time.Unix(1505354770, 0)}
+ info := bindataFileInfo{name: "wski18n/resources/ja_JA.all.json", size: 0, mode: os.FileMode(420), modTime: time.Unix(1515697090, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -212,7 +212,7 @@ func wski18nResourcesKo_krAllJson() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "wski18n/resources/ko_KR.all.json", size: 0, mode: os.FileMode(420), modTime: time.Unix(1505354770, 0)}
+ info := bindataFileInfo{name: "wski18n/resources/ko_KR.all.json", size: 0, mode: os.FileMode(420), modTime: time.Unix(1515697090, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -232,7 +232,7 @@ func wski18nResourcesPt_brAllJson() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "wski18n/resources/pt_BR.all.json", size: 0, mode: os.FileMode(420), modTime: time.Unix(1505354770, 0)}
+ info := bindataFileInfo{name: "wski18n/resources/pt_BR.all.json", size: 0, mode: os.FileMode(420), modTime: time.Unix(1515697090, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -252,7 +252,7 @@ func wski18nResourcesZh_hansAllJson() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "wski18n/resources/zh_Hans.all.json", size: 0, mode: os.FileMode(420), modTime: time.Unix(1505354770, 0)}
+ info := bindataFileInfo{name: "wski18n/resources/zh_Hans.all.json", size: 0, mode: os.FileMode(420), modTime: time.Unix(1515697090, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -272,7 +272,7 @@ func wski18nResourcesZh_hantAllJson() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "wski18n/resources/zh_Hant.all.json", size: 0, mode: os.FileMode(420), modTime: time.Unix(1505354770, 0)}
+ info := bindataFileInfo{name: "wski18n/resources/zh_Hant.all.json", size: 0, mode: os.FileMode(420), modTime: time.Unix(1515697090, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
diff --git a/wski18n/resources/en_US.all.json b/wski18n/resources/en_US.all.json
index eafe7bd..46e9f6a 100644
--- a/wski18n/resources/en_US.all.json
+++ b/wski18n/resources/en_US.all.json
@@ -164,7 +164,10 @@
"translation": "The [{{.oldkey}}] key in the {{.filetype}} file will soon be deprecated, please use the [{{.newkey}}] key instead.\n"
},
{ "id": "msg_err_missing_mandatory_key",
- "translation": "The mandatory key [{{.key}}] is missing."
+ "translation": "The mandatory key [{{.key}}] is missing.\n"
+ },
+ { "id": "msg_warn_missing_mandatory_key",
+ "translation": "The mandatory key [{{.key}}] should be set. Using default value [{{.value}}]...\n"
},
{
"id": "msg_err_mismatch_name_project",
@@ -223,55 +226,31 @@
"translation": "{{.key}} [{{.name}}] has been successfully undeployed.\n"
},
{
- "id": "SEPARATOR",
- "translation": "====================== Entries below this line are not verified ==================================="
- },
- {
- "id": "WARNING: The 'source' YAML key in trigger entity is deprecated. Please use 'feed' instead as described in specifications.\n",
- "translation": "WARNING: The 'source' YAML key in trigger entity is deprecated. Please use 'feed' instead as described in specifications.\n"
- },
- {
- "id": "Failed to invoke the feed when deleting trigger feed with error message: {{.err}} and error code: {{.code}}.\n",
+ "id": "msg_err_feed_invoke",
"translation": "Failed to invoke the feed when deleting trigger feed with error message: {{.err}} and error code: {{.code}}.\n"
},
{
- "id": "WARNING: Mandatory field Package Version must be set.\n",
- "translation": "WARNING: Mandatory field Package Version must be set.\n"
- },
- {
- "id": "WARNING: Package Version is not saved in the current wskdeploy version.\n",
- "translation": "WARNING: Package Version is not saved in the current wskdeploy version.\n"
+ "id": "msg_warn_key_value_not_saved",
+ "translation": "The value for key [{{.key}}] is not saved in the current version of wskdeploy.\n"
},
{
- "id": "WARNING: Mandatory field Package License must be set.\n",
- "translation": "WARNING: Mandatory field Package License must be set.\n"
+ "id": "msg_warn_invalid_key_value",
+ "translation": "The value for key [{{.key}}] is not valid.\n"
},
{
- "id": "WARNING: Package License is not saved in the current wskdeploy version.\n",
- "translation": "WARNING: Package License is not saved in the current wskdeploy version.\n"
- },
- {
- "id": "WARNING: License {{.licenseID}} is not a valid one.\n",
- "translation": "WARNING: License {{.licenseID}} is not a valid one.\n"
- },
- {
- "id": "memorySize of limits in manifest should be an integer between 128 and 512.\n",
+ "id": "msg_warn_limits_memory_size",
"translation": "memorySize of limits in manifest should be an integer between 128 and 512.\n"
},
{
- "id": "timeout of limits in manifest should be an integer between 100 and 300000.\n",
+ "id": "msg_warn_limits_timeout",
"translation": "timeout of limits in manifest should be an integer between 100 and 300000.\n"
},
{
- "id": "logSize of limits in manifest should be an integer between 0 and 10.\n",
+ "id": "msg_warn_limits_memory_log_size",
"translation": "logSize of limits in manifest should be an integer between 0 and 10.\n"
},
{
- "id": "WARNING: Limits {{.limitname}} is not changable as to now, which will be ignored.\n",
- "translation": "WARNING: Limits {{.limitname}} is not changable as to now, which will be ignored.\n"
- },
- {
- "id": "WARNING: application in deployment file will soon be deprecated, please use project instead.\n",
- "translation": "WARNING: application in deployment file will soon be deprecated, please use project instead.\n"
+ "id": "msg_warn_limit_changeable",
+ "translation": "Limit [{{.name}}] is currently not changeable. Ignoring for now....\n"
}
]
--
To stop receiving notification emails like this one, please contact
['"commits@openwhisk.apache.org" <co...@openwhisk.apache.org>'].