houshengbo closed pull request #665: Refactor "error" related data/functions
into their own pkg to avoid cycles.
URL: https://github.com/apache/incubator-openwhisk-wskdeploy/pull/665
This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:
As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):
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)
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]
With regards,
Apache Git Services