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 6dfb9e7  Refactor "error" related data/functions into their own pkg to 
avoid cycles. (#665)
6dfb9e7 is described below

commit 6dfb9e7f90c531250e88d620e4145b8c4d77f145
Author: Matt Rutkowski <[email protected]>
AuthorDate: Fri Dec 1 13:50:49 2017 -0600

    Refactor "error" related data/functions into their own pkg to avoid cycles. 
(#665)
    
    * Refactor error code into its own pkg to avoid cycles.
    
    * Refactor error code into its own pkg to avoid cycles.
    
    * Refactor error code into its own pkg to avoid cycles.
    
    * Simplify command error usage logic.
---
 cmd/root.go                                  |  9 ++---
 deployers/deploymentreader.go                |  7 ++--
 deployers/filesystemreader.go                |  7 ++--
 deployers/manifestreader.go                  | 45 ++++++++++++------------
 deployers/servicedeployer.go                 | 51 ++++++++++++++--------------
 deployers/whiskclient.go                     | 12 ++++---
 parsers/deploy_parser.go                     |  5 +--
 parsers/manifest_parser.go                   | 11 +++---
 parsers/manifest_parser_test.go              |  4 +--
 parsers/parameters.go                        | 13 +++----
 tests/src/integration/common/wskdeploy.go    |  9 ++---
 {utils => wskderrors}/wskdeployerror.go      |  2 +-
 {utils => wskderrors}/wskdeployerror_test.go |  3 +-
 13 files changed, 92 insertions(+), 86 deletions(-)

diff --git a/cmd/root.go b/cmd/root.go
index df579cf..d07005f 100644
--- a/cmd/root.go
+++ b/cmd/root.go
@@ -31,6 +31,7 @@ import (
        "path/filepath"
        "regexp"
        "strings"
+       "github.com/apache/incubator-openwhisk-wskdeploy/wskderrors"
 )
 
 var stderr = ""
@@ -180,7 +181,7 @@ func Deploy() error {
                        errString := wski18n.T("Missing {{.yaml}}/{{.yml}} 
file. Manifest file not found at path {{.projectPath}}.\n",
                                map[string]interface{}{"yaml": 
utils.ManifestFileNameYaml, "yml": utils.ManifestFileNameYml,
                                        "projectPath": projectPath})
-                       return utils.NewErrorManifestFileNotFound(projectPath, 
errString)
+                       return 
wskderrors.NewErrorManifestFileNotFound(projectPath, errString)
                }
                whisk.Debug(whisk.DbgInfo, stdout)
        }
@@ -239,7 +240,7 @@ func Deploy() error {
                errString := wski18n.T("Manifest file is not found at the path 
[{{.filePath}}].\n",
                        map[string]interface{}{"filePath": 
utils.Flags.ManifestPath})
                whisk.Debug(whisk.DbgError, errString)
-               return 
utils.NewErrorManifestFileNotFound(utils.Flags.ManifestPath, errString)
+               return 
wskderrors.NewErrorManifestFileNotFound(utils.Flags.ManifestPath, errString)
        }
 
 }
@@ -273,7 +274,7 @@ func Undeploy() error {
                        errString := wski18n.T("Missing {{.yaml}}/{{.yml}} 
file. Manifest file not found at path {{.projectPath}}.\n",
                                map[string]interface{}{"yaml": 
utils.ManifestFileNameYaml, "yml": utils.ManifestFileNameYml,
                                        "projectPath": projectPath})
-                       return utils.NewErrorManifestFileNotFound(projectPath, 
errString)
+                       return 
wskderrors.NewErrorManifestFileNotFound(projectPath, errString)
                }
                whisk.Debug(whisk.DbgInfo, stdout)
        }
@@ -330,6 +331,6 @@ func Undeploy() error {
                errString := wski18n.T("Manifest file is not found at the path 
[{{.filePath}}].\n",
                        map[string]interface{}{"filePath": 
utils.Flags.ManifestPath})
                whisk.Debug(whisk.DbgError, errString)
-               return 
utils.NewErrorManifestFileNotFound(utils.Flags.ManifestPath, errString)
+               return 
wskderrors.NewErrorManifestFileNotFound(utils.Flags.ManifestPath, errString)
        }
 }
diff --git a/deployers/deploymentreader.go b/deployers/deploymentreader.go
index 39dbd76..c788b51 100644
--- a/deployers/deploymentreader.go
+++ b/deployers/deploymentreader.go
@@ -23,6 +23,7 @@ import (
        "github.com/apache/incubator-openwhisk-wskdeploy/parsers"
        "github.com/apache/incubator-openwhisk-wskdeploy/utils"
        "github.com/apache/incubator-openwhisk-wskdeploy/wski18n"
+       "github.com/apache/incubator-openwhisk-wskdeploy/wskderrors"
 )
 
 type DeploymentReader struct {
@@ -148,7 +149,7 @@ func (reader *DeploymentReader) 
bindPackageInputsAndAnnotations() error {
                                        // TODO() i18n, need to use an ID
                                        // TODO() fix grammar error; need 
command before "but"
                                        err := errors.New(wski18n.T("Annotation 
key \"" + name + "\" does not exist in manifest file but specified in 
deployment file."))
-                                       return 
utils.NewYAMLFileFormatError(reader.DeploymentDescriptor.Filepath, err)
+                                       return 
wskderrors.NewYAMLFileFormatError(reader.DeploymentDescriptor.Filepath, err)
                                }
                        }
                }
@@ -238,7 +239,7 @@ func (reader *DeploymentReader) 
bindActionInputsAndAnnotations() error {
                                        if !keyExistsInManifest {
                                                // TODO() i18n, need to use an 
ID
                                                err := 
errors.New(wski18n.T("Annotation key \"" + name + "\" does not exist in 
manifest file but specified in deployment file."))
-                                               return 
utils.NewYAMLFileFormatError(reader.DeploymentDescriptor.Filepath, err)
+                                               return 
wskderrors.NewYAMLFileFormatError(reader.DeploymentDescriptor.Filepath, err)
                                        }
                                }
                        }
@@ -325,7 +326,7 @@ func (reader *DeploymentReader) 
bindTriggerInputsAndAnnotations() error {
                                        if !keyExistsInManifest {
                                                // TODO() i18n, need to use an 
ID
                                                err := 
errors.New(wski18n.T("Annotation key \"" + name + "\" does not exist in 
manifest file but specified in deployment file."))
-                                               return 
utils.NewYAMLFileFormatError(reader.DeploymentDescriptor.Filepath, err)
+                                               return 
wskderrors.NewYAMLFileFormatError(reader.DeploymentDescriptor.Filepath, err)
                                        }
                                }
                        }
diff --git a/deployers/filesystemreader.go b/deployers/filesystemreader.go
index f99a379..3bacf0d 100644
--- a/deployers/filesystemreader.go
+++ b/deployers/filesystemreader.go
@@ -26,6 +26,7 @@ import (
        "github.com/apache/incubator-openwhisk-client-go/whisk"
        "github.com/apache/incubator-openwhisk-wskdeploy/parsers"
        "github.com/apache/incubator-openwhisk-wskdeploy/utils"
+       "github.com/apache/incubator-openwhisk-wskdeploy/wskderrors"
 )
 
 // name of directory that can contain source code
@@ -56,7 +57,7 @@ func (reader *FileSystemReader) ReadProjectDirectory(manifest 
*parsers.YAML) ([]
                if fpath != reader.serviceDeployer.ProjectPath {
                        pathCount, err := reader.getFilePathCount(fpath)
             if err != nil {
-                return utils.NewFileReadError(fpath, err.Error())
+                return wskderrors.NewFileReadError(fpath, err.Error())
             }
 
                        if !f.IsDir() {
@@ -76,7 +77,7 @@ func (reader *FileSystemReader) ReadProjectDirectory(manifest 
*parsers.YAML) ([]
                                        if foundFile == true {
                                                _, action, err := 
reader.CreateActionFromFile(reader.serviceDeployer.ManifestPath, fpath)
                         if err != nil {
-                            return utils.NewFileReadError(fpath, err.Error())
+                            return wskderrors.NewFileReadError(fpath, 
err.Error())
                         }
 
                                                var record utils.ActionRecord
@@ -127,7 +128,7 @@ func (reader *FileSystemReader) 
CreateActionFromFile(manipath, filePath string)
 
                dat, err := 
new(utils.ContentReader).LocalReader.ReadLocal(filePath)
         if err != nil {
-            return name, action, utils.NewFileReadError(filePath, err.Error())
+            return name, action, wskderrors.NewFileReadError(filePath, 
err.Error())
         }
 
                action.Exec = new(whisk.Exec)
diff --git a/deployers/manifestreader.go b/deployers/manifestreader.go
index 85ece58..a8df385 100644
--- a/deployers/manifestreader.go
+++ b/deployers/manifestreader.go
@@ -24,6 +24,7 @@ import (
        "github.com/apache/incubator-openwhisk-client-go/whisk"
        "github.com/apache/incubator-openwhisk-wskdeploy/parsers"
        "github.com/apache/incubator-openwhisk-wskdeploy/utils"
+       "github.com/apache/incubator-openwhisk-wskdeploy/wskderrors"
 )
 
 var clientConfig *whisk.Config
@@ -69,62 +70,62 @@ func (deployer *ManifestReader) HandleYaml(sdeployer 
*ServiceDeployer, manifestP
 
        deps, err := 
manifestParser.ComposeDependenciesFromAllPackages(manifest, 
deployer.serviceDeployer.ProjectPath, deployer.serviceDeployer.ManifestPath)
        if err != nil {
-               return utils.NewYAMLFileFormatError(manifestName, err)
+               return wskderrors.NewYAMLFileFormatError(manifestName, err)
        }
 
        actions, err := manifestParser.ComposeActionsFromAllPackages(manifest, 
deployer.serviceDeployer.ManifestPath, ma)
        if err != nil {
-               return utils.NewYAMLFileFormatError(manifestName, err)
+               return wskderrors.NewYAMLFileFormatError(manifestName, err)
        }
 
        sequences, err := 
manifestParser.ComposeSequencesFromAllPackages(deployer.serviceDeployer.ClientConfig.Namespace,
 manifest, ma)
        if err != nil {
-               return utils.NewYAMLFileFormatError(manifestName, err)
+               return wskderrors.NewYAMLFileFormatError(manifestName, err)
        }
 
        triggers, err := 
manifestParser.ComposeTriggersFromAllPackages(manifest, 
deployer.serviceDeployer.ManifestPath, ma)
        if err != nil {
-               return utils.NewYAMLFileFormatError(manifestName, err)
+               return wskderrors.NewYAMLFileFormatError(manifestName, err)
        }
 
        rules, err := manifestParser.ComposeRulesFromAllPackages(manifest)
        if err != nil {
-               return utils.NewYAMLFileFormatError(manifestName, err)
+               return wskderrors.NewYAMLFileFormatError(manifestName, err)
        }
 
        apis, err := manifestParser.ComposeApiRecordsFromAllPackages(manifest)
        if err != nil {
-               return utils.NewYAMLFileFormatError(manifestName, err)
+               return wskderrors.NewYAMLFileFormatError(manifestName, err)
        }
 
        err = deployer.SetDependencies(deps)
        if err != nil {
-               return utils.NewYAMLFileFormatError(manifestName, err)
+               return wskderrors.NewYAMLFileFormatError(manifestName, err)
        }
 
        err = deployer.SetActions(actions)
        if err != nil {
-               return utils.NewYAMLFileFormatError(manifestName, err)
+               return wskderrors.NewYAMLFileFormatError(manifestName, err)
        }
 
        err = deployer.SetSequences(sequences)
        if err != nil {
-               return utils.NewYAMLFileFormatError(manifestName, err)
+               return wskderrors.NewYAMLFileFormatError(manifestName, err)
        }
 
        err = deployer.SetTriggers(triggers)
        if err != nil {
-               return utils.NewYAMLFileFormatError(manifestName, err)
+               return wskderrors.NewYAMLFileFormatError(manifestName, err)
        }
 
        err = deployer.SetRules(rules)
        if err != nil {
-               return utils.NewYAMLFileFormatError(manifestName, err)
+               return wskderrors.NewYAMLFileFormatError(manifestName, err)
        }
 
        err = deployer.SetApis(apis)
        if err != nil {
-               return utils.NewYAMLFileFormatError(manifestName, err)
+               return wskderrors.NewYAMLFileFormatError(manifestName, err)
        }
 
        return nil
@@ -143,7 +144,7 @@ func (reader *ManifestReader) SetDependencies(deps 
map[string]utils.DependencyRe
                                gitReader := utils.NewGitReader(depName, dep)
                                err := gitReader.CloneDependency()
                                if err != nil {
-                                       return 
utils.NewYAMLFileFormatError(depName, err)
+                                       return 
wskderrors.NewYAMLFileFormatError(depName, err)
                                }
                        } else {
                                // TODO: we should do a check to make sure this 
dependency is compatible with an already installed one.
@@ -184,7 +185,7 @@ func (reader *ManifestReader) SetPackage(packages 
map[string]*whisk.Package) err
                                // TODO(): i18n of error message (or create a 
new named error)
                                // TODO(): Is there a better way to handle an 
existing dependency of same name?
                                err := errors.New("Package [" + pkg.Name + "] 
exists already.")
-                               return 
utils.NewYAMLParserErr(reader.serviceDeployer.ManifestPath, err)
+                               return 
wskderrors.NewYAMLParserErr(reader.serviceDeployer.ManifestPath, err)
                        }
                }
                newPack := NewDeploymentPackage()
@@ -229,7 +230,7 @@ func (reader *ManifestReader) SetActions(actions 
[]utils.ActionRecord) error {
 
                                err := reader.checkAction(existAction)
                                if err != nil {
-                                       return 
utils.NewFileReadError(manifestAction.Filepath, err)
+                                       return 
wskderrors.NewFileReadError(manifestAction.Filepath, err)
                                }
 
                        } else {
@@ -238,13 +239,13 @@ func (reader *ManifestReader) SetActions(actions 
[]utils.ActionRecord) error {
                                err := errors.New("Conflict detected for action 
named [" +
                                        existAction.Action.Name + "].\nFound 
two locations for source file: [" +
                                        existAction.Filepath + "] and [" + 
manifestAction.Filepath + "]")
-                               return 
utils.NewYAMLParserErr(reader.serviceDeployer.ManifestPath, err)
+                               return 
wskderrors.NewYAMLParserErr(reader.serviceDeployer.ManifestPath, err)
                        }
                } else {
                        // not a new action so update the action in the package
                        err := reader.checkAction(manifestAction)
                        if err != nil {
-                               return 
utils.NewFileReadError(manifestAction.Filepath, err)
+                               return 
wskderrors.NewFileReadError(manifestAction.Filepath, err)
                        }
                        
reader.serviceDeployer.Deployment.Packages[manifestAction.Packagename].Actions[manifestAction.Action.Name]
 = manifestAction
                }
@@ -258,13 +259,13 @@ func (reader *ManifestReader) checkAction(action 
utils.ActionRecord) error {
        if action.Filepath == "" {
                // TODO(): i18n of error message (or create a new named error)
                err := errors.New("Action [" + action.Action.Name + "] has no 
source code location set.")
-               return 
utils.NewYAMLParserErr(reader.serviceDeployer.ManifestPath, err)
+               return 
wskderrors.NewYAMLParserErr(reader.serviceDeployer.ManifestPath, err)
        }
 
        if action.Action.Exec.Kind == "" {
                // TODO(): i18n of error message (or create a new named error)
                err := errors.New("Action [" + action.Action.Name + "] has no 
kind set.")
-               return 
utils.NewYAMLParserErr(reader.serviceDeployer.ManifestPath, err)
+               return 
wskderrors.NewYAMLParserErr(reader.serviceDeployer.ManifestPath, err)
        }
 
        if action.Action.Exec.Code != nil {
@@ -272,7 +273,7 @@ func (reader *ManifestReader) checkAction(action 
utils.ActionRecord) error {
                if code == "" && action.Action.Exec.Kind != "sequence" {
                        // TODO(): i18n of error message (or create a new named 
error)
                        err := errors.New("Action [" + action.Action.Name + "] 
has no source code.")
-                       return 
utils.NewYAMLParserErr(reader.serviceDeployer.ManifestPath, err)
+                       return 
wskderrors.NewYAMLParserErr(reader.serviceDeployer.ManifestPath, err)
                }
        }
 
@@ -293,7 +294,7 @@ func (reader *ManifestReader) SetSequences(actions 
[]utils.ActionRecord) error {
                        // TODO(): i18n of error message (or create a new named 
error)
                        err := errors.New("Sequence action's name [" +
                                seqAction.Action.Name + "] is already used by 
an action.")
-                       return 
utils.NewYAMLParserErr(reader.serviceDeployer.ManifestPath, err)
+                       return 
wskderrors.NewYAMLParserErr(reader.serviceDeployer.ManifestPath, err)
                }
                existAction, exists := 
reader.serviceDeployer.Deployment.Packages[seqAction.Packagename].Sequences[seqAction.Action.Name]
 
@@ -311,7 +312,7 @@ func (reader *ManifestReader) SetSequences(actions 
[]utils.ActionRecord) error {
                        err := reader.checkAction(seqAction)
                        if err != nil {
                                // TODO() Need a better error type here
-                               return 
utils.NewFileReadError(seqAction.Filepath, err)
+                               return 
wskderrors.NewFileReadError(seqAction.Filepath, err)
                        }
                        
reader.serviceDeployer.Deployment.Packages[seqAction.Packagename].Sequences[seqAction.Action.Name]
 = seqAction
                }
diff --git a/deployers/servicedeployer.go b/deployers/servicedeployer.go
index 275ecde..183798a 100644
--- a/deployers/servicedeployer.go
+++ b/deployers/servicedeployer.go
@@ -25,13 +25,14 @@ import (
        "strconv"
        "strings"
        "sync"
+       "reflect"
+       "time"
 
        "github.com/apache/incubator-openwhisk-client-go/whisk"
        "github.com/apache/incubator-openwhisk-wskdeploy/parsers"
        "github.com/apache/incubator-openwhisk-wskdeploy/utils"
        "github.com/apache/incubator-openwhisk-wskdeploy/wski18n"
-       "reflect"
-    "time"
+       "github.com/apache/incubator-openwhisk-wskdeploy/wskderrors"
 )
 
 const (
@@ -141,14 +142,14 @@ func (deployer *ServiceDeployer) 
ConstructDeploymentPlan() error {
                // Project Name in manifest/deployment file is mandatory for 
managed deployments
                if deployer.ProjectName == "" {
                        // TODO see if we can move string to translation file.
-                       return utils.NewYAMLFileFormatError(manifest.Filepath, 
"Project name in manifest file is mandatory for managed deployments")
+                       return 
wskderrors.NewYAMLFileFormatError(manifest.Filepath, "Project name in manifest 
file is mandatory for managed deployments")
                }
                // Every OpenWhisk entity in the manifest file will be 
annotated with:
                //managed: '{"__OW__PROJECT__NAME": <name>, 
"__OW__PROJECT_HASH": <hash>, "__OW__FILE": <path>}'
                deployer.ManagedAnnotation, err = 
utils.GenerateManagedAnnotation(deployer.ProjectName, manifest.Filepath)
                if err != nil {
                        // TODO see if we can pass in the YAML file path on 
first parameter
-                       return utils.NewYAMLFileFormatError(manifest.Filepath, 
err.Error())
+                       return 
wskderrors.NewYAMLFileFormatError(manifest.Filepath, err.Error())
                }
        }
 
@@ -202,7 +203,7 @@ func (deployer *ServiceDeployer) ConstructDeploymentPlan() 
error {
                                errorString := wski18n.T("The name of the 
project/application {{.projectNameDeploy}} in deployment file at 
[{{.deploymentFile}}] does not match the name of the project/application 
{{.projectNameManifest}}} in manifest file at [{{.manifestFile}}].",
                                        
map[string]interface{}{"projectNameDeploy": projectNameDeploy, 
"deploymentFile": deployer.DeploymentPath,
                                                "projectNameManifest": 
projectName, "manifestFile": deployer.ManifestPath})
-                               return 
utils.NewYAMLFileFormatError(manifest.Filepath, errorString)
+                               return 
wskderrors.NewYAMLFileFormatError(manifest.Filepath, errorString)
                        }
                }
                if err := deploymentReader.BindAssets(); err != nil {
@@ -278,7 +279,7 @@ func (deployer *ServiceDeployer) 
ConstructUnDeploymentPlan() (*DeploymentProject
                                errorString := wski18n.T("The name of the 
project/application {{.projectNameDeploy}} in deployment file at 
[{{.deploymentFile}}] does not match the name of the application 
{{.projectNameManifest}}} in manifest file at [{{.manifestFile}}].",
                                        
map[string]interface{}{"projectNameDeploy": projectNameDeploy, 
"deploymentFile": deployer.DeploymentPath,
                                                "projectNameManifest": 
projectName, "manifestFile": deployer.ManifestPath})
-                               return deployer.Deployment, 
utils.NewYAMLFileFormatError(manifest.Filepath, errorString)
+                               return deployer.Deployment, 
wskderrors.NewYAMLFileFormatError(manifest.Filepath, errorString)
                        }
                }
 
@@ -707,7 +708,7 @@ func (deployer *ServiceDeployer) createBinding(packa 
*whisk.BindingPackage) erro
                errString := wski18n.T("Got error creating package binding with 
error message: {{.err}} and error code: {{.code}}.\n",
                        map[string]interface{}{"err": wskErr.Error(), "code": 
strconv.Itoa(wskErr.ExitCode)})
                whisk.Debug(whisk.DbgError, errString)
-               return utils.NewWhiskClientError(wskErr.Error(), 
wskErr.ExitCode)
+               return wskderrors.NewWhiskClientError(wskErr.Error(), 
wskErr.ExitCode)
        } else {
                output := wski18n.T("Package binding {{.output}} has been 
successfully deployed.\n",
                        map[string]interface{}{"output": packa.Name})
@@ -730,7 +731,7 @@ func (deployer *ServiceDeployer) createPackage(packa 
*whisk.Package) error {
                errString := wski18n.T("Got error creating package with error 
message: {{.err}} and error code: {{.code}}.\n",
                        map[string]interface{}{"err": wskErr.Error(), "code": 
strconv.Itoa(wskErr.ExitCode)})
                whisk.Debug(whisk.DbgError, errString)
-               return utils.NewWhiskClientError(wskErr.Error(), 
wskErr.ExitCode)
+               return wskderrors.NewWhiskClientError(wskErr.Error(), 
wskErr.ExitCode)
        } else {
                output := wski18n.T("Package {{.output}} has been successfully 
deployed.\n",
                        map[string]interface{}{"output": packa.Name})
@@ -753,7 +754,7 @@ func (deployer *ServiceDeployer) createTrigger(trigger 
*whisk.Trigger) error {
                errString := wski18n.T("Got error creating trigger with error 
message: {{.err}} and error code: {{.code}}.\n",
                        map[string]interface{}{"err": wskErr.Error(), "code": 
strconv.Itoa(wskErr.ExitCode)})
                whisk.Debug(whisk.DbgError, errString)
-               return utils.NewWhiskClientError(wskErr.Error(), 
wskErr.ExitCode)
+               return wskderrors.NewWhiskClientError(wskErr.Error(), 
wskErr.ExitCode)
        } else {
                output := wski18n.T("Trigger {{.output}} has been successfully 
deployed.\n",
                        map[string]interface{}{"output": trigger.Name})
@@ -807,7 +808,7 @@ func (deployer *ServiceDeployer) createFeedAction(trigger 
*whisk.Trigger, feedNa
                errString := wski18n.T("Got error creating trigger with error 
message: {{.err}} and error code: {{.code}}.\n",
                        map[string]interface{}{"err": wskErr.Error(), "code": 
strconv.Itoa(wskErr.ExitCode)})
                whisk.Debug(whisk.DbgError, errString)
-               return utils.NewWhiskClientError(wskErr.Error(), 
wskErr.ExitCode)
+               return wskderrors.NewWhiskClientError(wskErr.Error(), 
wskErr.ExitCode)
        } else {
 
                qName, err := utils.ParseQualifiedName(feedName, 
deployer.ClientConfig.Namespace)
@@ -836,7 +837,7 @@ func (deployer *ServiceDeployer) createFeedAction(trigger 
*whisk.Trigger, feedNa
                        errString := wski18n.T("Got error creating trigger feed 
with error message: {{.err}} and error code: {{.code}}.\n",
                                map[string]interface{}{"err": wskErr.Error(), 
"code": strconv.Itoa(wskErr.ExitCode)})
                        whisk.Debug(whisk.DbgError, errString)
-                       return utils.NewWhiskClientError(wskErr.Error(), 
wskErr.ExitCode)
+                       return wskderrors.NewWhiskClientError(wskErr.Error(), 
wskErr.ExitCode)
                }
        }
        output = wski18n.T("Trigger feed {{.output}} has been successfully 
deployed.\n",
@@ -874,7 +875,7 @@ func (deployer *ServiceDeployer) createRule(rule 
*whisk.Rule) error {
                errString := wski18n.T("Got error creating rule with error 
message: {{.err}} and error code: {{.code}}.\n",
                        map[string]interface{}{"err": wskErr.Error(), "code": 
strconv.Itoa(wskErr.ExitCode)})
                whisk.Debug(whisk.DbgError, errString)
-               return utils.NewWhiskClientError(wskErr.Error(), 
wskErr.ExitCode)
+               return wskderrors.NewWhiskClientError(wskErr.Error(), 
wskErr.ExitCode)
        }
 
        output = wski18n.T("Rule {{.output}} has been successfully deployed.\n",
@@ -905,7 +906,7 @@ func (deployer *ServiceDeployer) createAction(pkgname 
string, action *whisk.Acti
                errString := wski18n.T("Got error creating action with error 
message: {{.err}} and error code: {{.code}}.\n",
                        map[string]interface{}{"err": wskErr.Error(), "code": 
strconv.Itoa(wskErr.ExitCode)})
                whisk.Debug(whisk.DbgError, errString)
-               return utils.NewWhiskClientError(wskErr.Error(), 
wskErr.ExitCode)
+               return wskderrors.NewWhiskClientError(wskErr.Error(), 
wskErr.ExitCode)
        } else {
                output := wski18n.T("Action {{.output}} has been successfully 
deployed.\n",
                        map[string]interface{}{"output": action.Name})
@@ -927,7 +928,7 @@ func (deployer *ServiceDeployer) createApi(api 
*whisk.ApiCreateRequest) error {
                errString := wski18n.T("Got error creating api with error 
message: {{.err}} and error code: {{.code}}.\n",
                        map[string]interface{}{"err": wskErr.Error(), "code": 
strconv.Itoa(wskErr.ExitCode)})
                whisk.Debug(whisk.DbgError, errString)
-               return utils.NewWhiskClientError(wskErr.Error(), 
wskErr.ExitCode)
+               return wskderrors.NewWhiskClientError(wskErr.Error(), 
wskErr.ExitCode)
        }
        return nil
 }
@@ -1047,7 +1048,7 @@ func (deployer *ServiceDeployer) UnDeployDependencies() 
error {
                                                        errString := 
wski18n.T("Got error deleting binding package with error message: {{.err}} and 
error code: {{.code}}.\n",
                                                                
map[string]interface{}{"err": wskErr.Error(), "code": 
strconv.Itoa(wskErr.ExitCode)})
                                                        
whisk.Debug(whisk.DbgError, errString)
-                                                       return 
utils.NewWhiskClientError(wskErr.Error(), wskErr.ExitCode)
+                                                       return 
wskderrors.NewWhiskClientError(wskErr.Error(), wskErr.ExitCode)
                                                }
                                        }
                                }
@@ -1154,7 +1155,7 @@ func (deployer *ServiceDeployer) deletePackage(packa 
*whisk.Package) error {
                        errString := wski18n.T("Got error deleting package with 
error message: {{.err}} and error code: {{.code}}.\n",
                                map[string]interface{}{"err": wskErr.Error(), 
"code": strconv.Itoa(wskErr.ExitCode)})
                        whisk.Debug(whisk.DbgError, errString)
-                       return utils.NewWhiskClientError(wskErr.Error(), 
wskErr.ExitCode)
+                       return wskderrors.NewWhiskClientError(wskErr.Error(), 
wskErr.ExitCode)
                }
        }
        return nil
@@ -1176,7 +1177,7 @@ func (deployer *ServiceDeployer) deleteTrigger(trigger 
*whisk.Trigger) error {
                errString := wski18n.T("Got error deleting trigger with error 
message: {{.err}} and error code: {{.code}}.\n",
                        map[string]interface{}{"err": wskErr.Error(), "code": 
strconv.Itoa(wskErr.ExitCode)})
                whisk.Debug(whisk.DbgError, errString)
-               return utils.NewWhiskClientError(wskErr.Error(), 
wskErr.ExitCode)
+               return wskderrors.NewWhiskClientError(wskErr.Error(), 
wskErr.ExitCode)
        } else {
                output := wski18n.T("Trigger {{.trigger}} has been removed.\n",
                        map[string]interface{}{"trigger": trigger.Name})
@@ -1216,7 +1217,7 @@ func (deployer *ServiceDeployer) deleteFeedAction(trigger 
*whisk.Trigger, feedNa
                errString := wski18n.T("Failed to invoke the feed when deleting 
trigger feed with error message: {{.err}} and error code: {{.code}}.\n",
                        map[string]interface{}{"err": wskErr.Error(), "code": 
strconv.Itoa(wskErr.ExitCode)})
                whisk.Debug(whisk.DbgError, errString)
-               return utils.NewWhiskClientError(wskErr.Error(), 
wskErr.ExitCode)
+               return wskderrors.NewWhiskClientError(wskErr.Error(), 
wskErr.ExitCode)
 
        } else {
                trigger.Parameters = nil
@@ -1231,7 +1232,7 @@ func (deployer *ServiceDeployer) deleteFeedAction(trigger 
*whisk.Trigger, feedNa
                        errString := wski18n.T("Got error deleting trigger with 
error message: {{.err}} and error code: {{.code}}.\n",
                                map[string]interface{}{"err": wskErr.Error(), 
"code": strconv.Itoa(wskErr.ExitCode)})
                        whisk.Debug(whisk.DbgError, errString)
-                       return utils.NewWhiskClientError(wskErr.Error(), 
wskErr.ExitCode)
+                       return wskderrors.NewWhiskClientError(wskErr.Error(), 
wskErr.ExitCode)
                }
        }
 
@@ -1254,7 +1255,7 @@ func (deployer *ServiceDeployer) deleteRule(rule 
*whisk.Rule) error {
         errString := wski18n.T("Got error deleting rule with error message: 
{{.err}} and error code: {{.code}}.\n",
             map[string]interface{}{"err": wskErr.Error(), "code": 
strconv.Itoa(wskErr.ExitCode)})
         whisk.Debug(whisk.DbgError, errString)
-        return utils.NewWhiskClientError(wskErr.Error(), wskErr.ExitCode)
+        return wskderrors.NewWhiskClientError(wskErr.Error(), wskErr.ExitCode)
     }
        output = wski18n.T("Rule {{.rule}} has been removed.\n",
                map[string]interface{}{"rule": rule.Name})
@@ -1286,7 +1287,7 @@ func (deployer *ServiceDeployer) deleteAction(pkgname 
string, action *whisk.Acti
                        errString := wski18n.T("Got error deleting action with 
error message: {{.err}} and error code: {{.code}}.\n",
                                map[string]interface{}{"err": wskErr.Error(), 
"code": strconv.Itoa(wskErr.ExitCode)})
                        whisk.Debug(whisk.DbgError, errString)
-                       return utils.NewWhiskClientError(wskErr.Error(), 
wskErr.ExitCode)
+                       return wskderrors.NewWhiskClientError(wskErr.Error(), 
wskErr.ExitCode)
 
                }
                output = wski18n.T("Action {{.action}} has been removed.\n",
@@ -1344,7 +1345,7 @@ func (deployer *ServiceDeployer) 
printDeploymentAssets(assets *DeploymentProject
                for _, p := range pack.Package.Parameters {
                        jsonValue, err := utils.PrettyJSON(p.Value)
                        if err != nil {
-                               fmt.Printf("        - %s : %s\n", p.Key, 
utils.STR_UNKNOWN_VALUE)
+                               fmt.Printf("        - %s : %s\n", p.Key, 
wskderrors.STR_UNKNOWN_VALUE)
                        } else {
                                fmt.Printf("        - %s : %v\n", p.Key, 
jsonValue)
                        }
@@ -1372,7 +1373,7 @@ func (deployer *ServiceDeployer) 
printDeploymentAssets(assets *DeploymentProject
                                        } else {
                                                jsonValue, err := 
utils.PrettyJSON(p.Value)
                                                if err != nil {
-                                                       fmt.Printf("        - 
%s : %s\n", p.Key, utils.STR_UNKNOWN_VALUE)
+                                                       fmt.Printf("        - 
%s : %s\n", p.Key, wskderrors.STR_UNKNOWN_VALUE)
                                                } else {
                                                        fmt.Printf("        - 
%s : %v\n", p.Key, jsonValue)
                                                }
@@ -1380,7 +1381,7 @@ func (deployer *ServiceDeployer) 
printDeploymentAssets(assets *DeploymentProject
                                } else {
                                        jsonValue, err := 
utils.PrettyJSON(p.Value)
                                        if err != nil {
-                                               fmt.Printf("        - %s : 
%s\n", p.Key, utils.STR_UNKNOWN_VALUE)
+                                               fmt.Printf("        - %s : 
%s\n", p.Key, wskderrors.STR_UNKNOWN_VALUE)
                                        } else {
                                                fmt.Printf("        - %s : 
%v\n", p.Key, jsonValue)
                                        }
@@ -1410,7 +1411,7 @@ func (deployer *ServiceDeployer) 
printDeploymentAssets(assets *DeploymentProject
                for _, p := range trigger.Parameters {
                        jsonValue, err := utils.PrettyJSON(p.Value)
                        if err != nil {
-                               fmt.Printf("        - %s : %s\n", p.Key, 
utils.STR_UNKNOWN_VALUE)
+                               fmt.Printf("        - %s : %s\n", p.Key, 
wskderrors.STR_UNKNOWN_VALUE)
                        } else {
                                fmt.Printf("        - %s : %v\n", p.Key, 
jsonValue)
                        }
diff --git a/deployers/whiskclient.go b/deployers/whiskclient.go
index 92d66fc..a5fb5ad 100644
--- a/deployers/whiskclient.go
+++ b/deployers/whiskclient.go
@@ -20,15 +20,17 @@ package deployers
 import (
        "bufio"
        "fmt"
-       "github.com/apache/incubator-openwhisk-client-go/whisk"
-       "github.com/apache/incubator-openwhisk-wskdeploy/parsers"
-       "github.com/apache/incubator-openwhisk-wskdeploy/utils"
-       "github.com/apache/incubator-openwhisk-wskdeploy/wski18n"
        "net/http"
        "os"
        "path"
        "strings"
        "time"
+
+       "github.com/apache/incubator-openwhisk-client-go/whisk"
+       "github.com/apache/incubator-openwhisk-wskdeploy/parsers"
+       "github.com/apache/incubator-openwhisk-wskdeploy/utils"
+       "github.com/apache/incubator-openwhisk-wskdeploy/wski18n"
+       "github.com/apache/incubator-openwhisk-wskdeploy/wskderrors"
 )
 
 const (
@@ -234,7 +236,7 @@ func NewWhiskConfig(proppath string, deploymentPath string, 
manifestPath string,
 
                }
                whisk.Debug(whisk.DbgError, errStr)
-               return clientConfig, 
utils.NewWhiskClientInvalidConfigError(errStr)
+               return clientConfig, 
wskderrors.NewWhiskClientInvalidConfigError(errStr)
        }
 
        stdout := wski18n.T("The API host is {{.apihost}}, from 
{{.apisource}}.\n",
diff --git a/parsers/deploy_parser.go b/parsers/deploy_parser.go
index 081e5c4..dbecd0b 100644
--- a/parsers/deploy_parser.go
+++ b/parsers/deploy_parser.go
@@ -20,6 +20,7 @@ package parsers
 import (
        "github.com/apache/incubator-openwhisk-wskdeploy/utils"
        "gopkg.in/yaml.v2"
+       "github.com/apache/incubator-openwhisk-wskdeploy/wskderrors"
 )
 
 func (dm *YAMLParser) unmarshalDeployment(input []byte, deploy *YAML) error {
@@ -34,11 +35,11 @@ func (dm *YAMLParser) ParseDeployment(deploymentPath 
string) (*YAML, error) {
        dplyyaml := YAML{}
        content, err := 
new(utils.ContentReader).LocalReader.ReadLocal(deploymentPath)
     if err != nil {
-        return &dplyyaml, utils.NewFileReadError(deploymentPath, err.Error())
+        return &dplyyaml, wskderrors.NewFileReadError(deploymentPath, 
err.Error())
     }
        err = dm.unmarshalDeployment(content, &dplyyaml)
     if err != nil {
-        return &dplyyaml, utils.NewYAMLParserErr(deploymentPath, err)
+        return &dplyyaml, wskderrors.NewYAMLParserErr(deploymentPath, err)
     }
        dplyyaml.Filepath = deploymentPath
     dplyyamlEnvVar := ReadEnvVariable(&dplyyaml)
diff --git a/parsers/manifest_parser.go b/parsers/manifest_parser.go
index 294d9b7..4cd2a26 100644
--- a/parsers/manifest_parser.go
+++ b/parsers/manifest_parser.go
@@ -31,6 +31,7 @@ import (
        "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"
 )
 
 // Read existing manifest file or create new if none exists
@@ -41,7 +42,7 @@ func ReadOrCreateManifest() (*YAML, error) {
                dat, _ := ioutil.ReadFile(utils.ManifestFileNameYaml)
                err := NewYAMLParser().Unmarshal(dat, &maniyaml)
                if err != nil {
-                       return &maniyaml, 
utils.NewFileReadError(utils.ManifestFileNameYaml, err.Error())
+                       return &maniyaml, 
wskderrors.NewFileReadError(utils.ManifestFileNameYaml, err.Error())
                }
        }
        return &maniyaml, nil
@@ -51,12 +52,12 @@ func ReadOrCreateManifest() (*YAML, error) {
 func Write(manifest *YAML, filename string) error {
        output, err := NewYAMLParser().marshal(manifest)
        if err != nil {
-               return utils.NewYAMLFileFormatError(filename, err.Error())
+               return wskderrors.NewYAMLFileFormatError(filename, err.Error())
        }
 
        f, err := os.Create(filename)
        if err != nil {
-               return utils.NewFileReadError(filename, err.Error())
+               return wskderrors.NewFileReadError(filename, err.Error())
        }
        defer f.Close()
 
@@ -87,12 +88,12 @@ func (dm *YAMLParser) ParseManifest(manifestPath string) 
(*YAML, error) {
 
        content, err := utils.Read(manifestPath)
        if err != nil {
-               return &maniyaml, utils.NewFileReadError(manifestPath, 
err.Error())
+               return &maniyaml, wskderrors.NewFileReadError(manifestPath, 
err.Error())
        }
 
        err = mm.Unmarshal(content, &maniyaml)
        if err != nil {
-               return &maniyaml, utils.NewYAMLParserErr(manifestPath, err)
+               return &maniyaml, wskderrors.NewYAMLParserErr(manifestPath, err)
        }
        maniyaml.Filepath = manifestPath
        manifest := ReadEnvVariable(&maniyaml)
diff --git a/parsers/manifest_parser_test.go b/parsers/manifest_parser_test.go
index 2f1d7fa..b9aca56 100644
--- a/parsers/manifest_parser_test.go
+++ b/parsers/manifest_parser_test.go
@@ -20,7 +20,6 @@
 package parsers
 
 import (
-    "github.com/apache/incubator-openwhisk-wskdeploy/utils"
     "github.com/stretchr/testify/assert"
     "io/ioutil"
     "os"
@@ -31,6 +30,7 @@ import (
     "strconv"
     "strings"
     "github.com/apache/incubator-openwhisk-client-go/whisk"
+    "github.com/apache/incubator-openwhisk-wskdeploy/wskderrors"
 )
 
 // Test 1: validate manifest_parser:Unmarshal() method with a sample manifest 
in NodeJS
@@ -935,7 +935,7 @@ func TestResolveParameterForMultiLineParams(t *testing.T) {
     switch errorType := err.(type) {
     default:
         assert.Fail(t, "Wrong error type received: We are expecting 
ParserErr.")
-    case *utils.YAMLParserError:
+    case *wskderrors.YAMLParserError:
         assert.Equal(t, "Parameter [name] has an invalid Type. [invalid]", 
errorType.Message)
     }
 
diff --git a/parsers/parameters.go b/parsers/parameters.go
index 24a389f..41e7a2b 100644
--- a/parsers/parameters.go
+++ b/parsers/parameters.go
@@ -21,6 +21,7 @@ import (
        "reflect"
        "encoding/json"
        "github.com/apache/incubator-openwhisk-wskdeploy/utils"
+       "github.com/apache/incubator-openwhisk-wskdeploy/wskderrors"
 )
 
 // TODO(): Support other valid Package Manifest types
@@ -113,7 +114,7 @@ func ResolveParamTypeFromValue(paramName string, value 
interface{}, filePath str
 
                } else {
                        // raise an error if parameter's value is not a known 
type
-                       err = utils.NewInvalidParameterTypeError(filePath, 
paramName, actualType)
+                       err = wskderrors.NewInvalidParameterTypeError(filePath, 
paramName, actualType)
                }
        }
        return paramType, err
@@ -159,7 +160,7 @@ func resolveSingleLineParameter(filePath string, paramName 
string, param *Parame
 
        } else {
                // TODO() - move string to i18n
-               return param.Value, utils.NewYAMLParserErr(filePath,
+               return param.Value, wskderrors.NewYAMLParserErr(filePath,
                        "Parameter [" + paramName + "] is not single-line 
format.")
        }
 
@@ -200,7 +201,7 @@ func resolveMultiLineParameter(filePath string, paramName 
string, param *Paramet
                if param.Type != "" {
                        if !isValidParameterType(param.Type) {
                                // TODO() - move string to i18n
-                               return param.Value, 
utils.NewYAMLParserErr(filePath,
+                               return param.Value, 
wskderrors.NewYAMLParserErr(filePath,
                                        "Parameter [" + paramName + "] has an 
invalid Type. [" + param.Type + "]")
                        }
                } else {
@@ -214,7 +215,7 @@ func resolveMultiLineParameter(filePath string, paramName 
string, param *Paramet
                //}
        } else {
                // TODO() - move string to i18n
-               return param.Value, utils.NewYAMLParserErr(filePath,
+               return param.Value, wskderrors.NewYAMLParserErr(filePath,
                        "Parameter [" + paramName + "] is not multiline 
format.")
        }
 
@@ -265,12 +266,12 @@ func resolveJSONParameter(filePath string, paramName 
string, param *Parameter, v
                                return temp, errorParser
                        }
                } else{
-                       errorParser = 
utils.NewParameterTypeMismatchError(filePath, paramName, JSON, param.Type)
+                       errorParser = 
wskderrors.NewParameterTypeMismatchError(filePath, paramName, JSON, param.Type)
                }
 
        } else {
                // TODO() - move string to i18n
-               errorParser = utils.NewYAMLParserErr(filePath, "Parameter [" + 
paramName + "] is not JSON format.")
+               errorParser = wskderrors.NewYAMLParserErr(filePath, "Parameter 
[" + paramName + "] is not JSON format.")
        }
 
        return param.Value, errorParser
diff --git a/tests/src/integration/common/wskdeploy.go 
b/tests/src/integration/common/wskdeploy.go
index 3b1fb00..7f9651b 100644
--- a/tests/src/integration/common/wskdeploy.go
+++ b/tests/src/integration/common/wskdeploy.go
@@ -31,6 +31,7 @@ import (
        "strings"
        "path/filepath"
        "path"
+       "github.com/apache/incubator-openwhisk-wskdeploy/wskderrors"
 )
 
 const (
@@ -120,12 +121,8 @@ func (wskdeploy *Wskdeploy) RunCommand(s ...string) 
(string, error) {
 
        var returnError error = nil
        if err != nil {
-               if len(errb.String()) > 0 {
-                       // Note: (sub-command) is always at Args[0] which is 
guaranteed to be not empty
-                       returnError = utils.NewCommandError(command.Args[0], 
errb.String())
-               } else {
-                       returnError = err
-               }
+               // Note: (sub-command) is always at Args[0] which is guaranteed 
to be not empty
+               returnError = wskderrors.NewCommandError(command.Args[0], 
errb.String())
        }
        printOutput(outb.String())
        if returnError != nil {
diff --git a/utils/wskdeployerror.go b/wskderrors/wskdeployerror.go
similarity index 99%
rename from utils/wskdeployerror.go
rename to wskderrors/wskdeployerror.go
index d5175e8..2d675a3 100644
--- a/utils/wskdeployerror.go
+++ b/wskderrors/wskdeployerror.go
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package utils
+package wskderrors
 
 import (
        "fmt"
diff --git a/utils/wskdeployerror_test.go b/wskderrors/wskdeployerror_test.go
similarity index 99%
rename from utils/wskdeployerror_test.go
rename to wskderrors/wskdeployerror_test.go
index f9a4cb6..5c7507d 100644
--- a/utils/wskdeployerror_test.go
+++ b/wskderrors/wskdeployerror_test.go
@@ -17,7 +17,7 @@
  * limitations under the License.
  */
 
-package utils
+package wskderrors
 
 import (
        "testing"
@@ -173,7 +173,6 @@ func TestCustomErrorOutputFormat(t *testing.T) {
        // TODO add a unit test once we re-factor error related modules into a 
new package
        // to avoid cyclic dependency errors in GoLang.
        //manifestFile := "../tests/dat/manifest_bad_yaml_invalid_comment.yaml"
-       //// read and parse manifest.yaml file
        //m, err := parsers.NewYAMLParser().ParseManifest(manifestFile)
        //fmt.Println(err)
 

-- 
To stop receiving notification emails like this one, please contact
['"[email protected]" <[email protected]>'].

Reply via email to