You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openwhisk.apache.org by mr...@apache.org on 2017/10/25 22:39:12 UTC
[incubator-openwhisk-wskdeploy] branch master updated: Adding
support for project (#627)
This is an automated email from the ASF dual-hosted git repository.
mrutkowski 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 ced8f43 Adding support for project (#627)
ced8f43 is described below
commit ced8f43f4de2f121b3e63d302ae50eba1f14b5bb
Author: Priti Desai <pd...@us.ibm.com>
AuthorDate: Wed Oct 25 15:39:10 2017 -0700
Adding support for project (#627)
---
deployers/deploymentreader.go | 90 ++--
deployers/deploymentreader_test.go | 2 +-
deployers/servicedeployer.go | 182 ++++----
deployers/verifier.go | 14 +-
deployers/whiskclient.go | 6 +-
...eployment_hello_world_triggerrule_bindings.yaml | 2 +-
...deployment_hello_world_triggerrule_unbound.yaml | 2 +-
parsers/deploy_parser.go | 4 +-
parsers/deploy_parser_test.go | 384 ++++++++--------
parsers/manifest_parser.go | 14 +-
parsers/yamlparser.go | 122 ++---
parsers/yamlparser_test.go | 27 +-
tests/dat/deployment_compose_trigger.yaml | 2 +-
...plication.yaml => deployment_data_project.yaml} | 2 +-
...e.yaml => deployment_data_project_package.yaml} | 2 +-
...> deployment_data_project_package_env_var.yaml} | 2 +-
...ployment_data_project_package_env_var_con.yaml} | 2 +-
... deployment_data_project_packages_env_var.yaml} | 2 +-
...loyment_data_project_packages_env_var_con.yaml} | 2 +-
tests/dat/deployment_validate_credentials.yaml | 2 +-
.../dat/deployment_validate_deployment_reader.yaml | 2 +-
tests/src/integration/alarmtrigger/deployment.yaml | 2 +-
tests/src/integration/common/wskdeploy.go | 2 +-
tests/src/integration/helloworld/deployment.yaml | 2 +-
tests/src/integration/message-hub/deployment.yaml | 2 +-
.../actions/hello.js | 26 ++
.../deployment-with-application.yaml} | 6 +-
.../deployment-with-project.yaml} | 8 +-
.../manifest-with-application.yaml | 18 +
.../manifest-with-project.yaml | 18 +
.../validate-application-and-project_test.go | 50 ++
.../deployment.yaml | 2 +-
.../deployment.yaml | 2 +-
.../not-standard-deployment.yaml | 2 +-
.../random-name-2.yaml | 2 +-
.../yaml-deployment-with-yml-manifest.yaml | 2 +-
.../validate-package-in-manifest/deployment.yaml | 2 +-
.../validate-packages-in-manifest/deployment.yaml | 2 +-
.../validatePackageInDeployment/deployment.yaml | 2 +-
.../validatePackagesInDeployment/deployment.yaml | 2 +-
tests/usecases/github/deployment.yaml | 2 +-
tests/usecases/slack/deployment.yaml | 2 +-
utils/misc.go | 2 +-
wski18n/i18n_resources.go | 510 ++++++++++-----------
wski18n/resources/en_US.all.json | 8 +
45 files changed, 851 insertions(+), 692 deletions(-)
diff --git a/deployers/deploymentreader.go b/deployers/deploymentreader.go
index 9141adb..d9e5759 100644
--- a/deployers/deploymentreader.go
+++ b/deployers/deploymentreader.go
@@ -63,23 +63,23 @@ func (reader *DeploymentReader) bindPackageInputsAndAnnotations() {
packMap := make(map[string]parsers.Package)
- if reader.DeploymentDescriptor.Application.Packages == nil {
+ if reader.DeploymentDescriptor.GetProject().Packages == nil {
// a single package is specified in deployment YAML file with "package" key
- if len(reader.DeploymentDescriptor.Application.Package.Packagename) != 0 {
- packMap[reader.DeploymentDescriptor.Application.Package.Packagename] = reader.DeploymentDescriptor.Application.Package
- utils.PrintOpenWhiskOutputln("WARNING: The package YAML key in deployment file will soon be deprecated. Please use packages instead as described in specifications.")
- } else {
- if reader.DeploymentDescriptor.Packages != nil {
- for packName, depPacks := range reader.DeploymentDescriptor.Packages {
- depPacks.Packagename = packName
- packMap[packName] = depPacks
- }
- } else {
- packMap[reader.DeploymentDescriptor.Package.Packagename] = reader.DeploymentDescriptor.Package
- }
- }
+ if len(reader.DeploymentDescriptor.GetProject().Package.Packagename) != 0 {
+ packMap[reader.DeploymentDescriptor.GetProject().Package.Packagename] = reader.DeploymentDescriptor.GetProject().Package
+ utils.PrintOpenWhiskOutputln("WARNING: The package YAML key in deployment file will soon be deprecated. Please use packages instead as described in specifications.")
+ } else {
+ if reader.DeploymentDescriptor.Packages != nil {
+ for packName, depPacks := range reader.DeploymentDescriptor.Packages {
+ depPacks.Packagename = packName
+ packMap[packName] = depPacks
+ }
+ } else {
+ packMap[reader.DeploymentDescriptor.Package.Packagename] = reader.DeploymentDescriptor.Package
+ }
+ }
} else {
- for packName, depPacks := range reader.DeploymentDescriptor.Application.Packages {
+ for packName, depPacks := range reader.DeploymentDescriptor.GetProject().Packages {
depPacks.Packagename = packName
packMap[packName] = depPacks
}
@@ -90,7 +90,7 @@ func (reader *DeploymentReader) bindPackageInputsAndAnnotations() {
serviceDeployPack := reader.serviceDeployer.Deployment.Packages[packName]
if serviceDeployPack == nil {
- utils.PrintOpenWhiskOutputln("WARNING: Package name in deployment file " + packName + " does not match with manifest file.")
+ utils.PrintOpenWhiskOutputln("WARNING: Package name in deployment file " + packName + " does not match with manifest file.")
break
}
@@ -143,22 +143,22 @@ func (reader *DeploymentReader) bindActionInputsAndAnnotations() {
packMap := make(map[string]parsers.Package)
- if reader.DeploymentDescriptor.Application.Packages == nil {
+ if reader.DeploymentDescriptor.GetProject().Packages == nil {
// a single package is specified in deployment YAML file with "package" key
- if len(reader.DeploymentDescriptor.Application.Package.Packagename) != 0 {
- packMap[reader.DeploymentDescriptor.Application.Package.Packagename] = reader.DeploymentDescriptor.Application.Package
- } else {
- if reader.DeploymentDescriptor.Packages != nil {
- for packName, depPacks := range reader.DeploymentDescriptor.Packages {
- depPacks.Packagename = packName
- packMap[packName] = depPacks
- }
- } else {
- packMap[reader.DeploymentDescriptor.Package.Packagename] = reader.DeploymentDescriptor.Package
- }
- }
+ if len(reader.DeploymentDescriptor.GetProject().Package.Packagename) != 0 {
+ packMap[reader.DeploymentDescriptor.GetProject().Package.Packagename] = reader.DeploymentDescriptor.GetProject().Package
+ } else {
+ if reader.DeploymentDescriptor.Packages != nil {
+ for packName, depPacks := range reader.DeploymentDescriptor.Packages {
+ depPacks.Packagename = packName
+ packMap[packName] = depPacks
+ }
+ } else {
+ packMap[reader.DeploymentDescriptor.Package.Packagename] = reader.DeploymentDescriptor.Package
+ }
+ }
} else {
- for packName, depPacks := range reader.DeploymentDescriptor.Application.Packages {
+ for packName, depPacks := range reader.DeploymentDescriptor.GetProject().Packages {
depPacks.Packagename = packName
packMap[packName] = depPacks
}
@@ -227,21 +227,21 @@ func (reader *DeploymentReader) bindTriggerInputsAndAnnotations() {
packMap := make(map[string]parsers.Package)
- if reader.DeploymentDescriptor.Application.Packages == nil {
- if len(reader.DeploymentDescriptor.Application.Package.Packagename) != 0 {
- packMap[reader.DeploymentDescriptor.Application.Package.Packagename] = reader.DeploymentDescriptor.Application.Package
- } else {
- if reader.DeploymentDescriptor.Packages != nil {
- for packName, depPacks := range reader.DeploymentDescriptor.Packages {
- depPacks.Packagename = packName
- packMap[packName] = depPacks
- }
- } else {
- packMap[reader.DeploymentDescriptor.Package.Packagename] = reader.DeploymentDescriptor.Package
- }
- }
+ if reader.DeploymentDescriptor.GetProject().Packages == nil {
+ if len(reader.DeploymentDescriptor.GetProject().Package.Packagename) != 0 {
+ packMap[reader.DeploymentDescriptor.GetProject().Package.Packagename] = reader.DeploymentDescriptor.GetProject().Package
+ } else {
+ if reader.DeploymentDescriptor.Packages != nil {
+ for packName, depPacks := range reader.DeploymentDescriptor.Packages {
+ depPacks.Packagename = packName
+ packMap[packName] = depPacks
+ }
+ } else {
+ packMap[reader.DeploymentDescriptor.Package.Packagename] = reader.DeploymentDescriptor.Package
+ }
+ }
} else {
- for packName, depPacks := range reader.DeploymentDescriptor.Application.Packages {
+ for packName, depPacks := range reader.DeploymentDescriptor.GetProject().Packages {
depPacks.Packagename = packName
packMap[packName] = depPacks
}
@@ -273,7 +273,7 @@ func (reader *DeploymentReader) bindTriggerInputsAndAnnotations() {
}
for _, keyVal := range wskTrigger.Parameters {
- utils.PrintOpenWhiskOutputln("Checking key " + keyVal.Key)
+ utils.PrintOpenWhiskOutputln("Checking key " + keyVal.Key)
if _, exists := depParams[keyVal.Key]; !exists {
keyValArr = append(keyValArr, keyVal)
}
diff --git a/deployers/deploymentreader_test.go b/deployers/deploymentreader_test.go
index 458ebe2..53e326b 100644
--- a/deployers/deploymentreader_test.go
+++ b/deployers/deploymentreader_test.go
@@ -41,7 +41,7 @@ func init() {
// Check DeploymentReader could handle deployment yaml successfully.
func TestDeploymentReader_HandleYaml(t *testing.T) {
dr.HandleYaml()
- assert.NotNil(t, dr.DeploymentDescriptor.Application.Packages["GitHubCommits"], "DeploymentReader handle deployment yaml failed.")
+ assert.NotNil(t, dr.DeploymentDescriptor.GetProject().Packages["GitHubCommits"], "DeploymentReader handle deployment yaml failed.")
}
func TestDeployerCheck(t *testing.T) {
diff --git a/deployers/servicedeployer.go b/deployers/servicedeployer.go
index c340a3e..8bc8b64 100644
--- a/deployers/servicedeployer.go
+++ b/deployers/servicedeployer.go
@@ -33,15 +33,15 @@ import (
"reflect"
)
-type DeploymentApplication struct {
+type DeploymentProject struct {
Packages map[string]*DeploymentPackage
Triggers map[string]*whisk.Trigger
Rules map[string]*whisk.Rule
Apis map[string]*whisk.ApiCreateRequest
}
-func NewDeploymentApplication() *DeploymentApplication {
- var dep DeploymentApplication
+func NewDeploymentProject() *DeploymentProject {
+ var dep DeploymentProject
dep.Packages = make(map[string]*DeploymentPackage)
dep.Triggers = make(map[string]*whisk.Trigger)
dep.Rules = make(map[string]*whisk.Rule)
@@ -71,7 +71,7 @@ func NewDeploymentPackage() *DeploymentPackage {
// 3. Collect information about the source code files in the working directory
// 4. Create a deployment plan to create OpenWhisk service
type ServiceDeployer struct {
- Deployment *DeploymentApplication
+ Deployment *DeploymentProject
Client *whisk.Client
mt sync.RWMutex
RootPackageName string
@@ -90,7 +90,7 @@ type ServiceDeployer struct {
// NewServiceDeployer is a Factory to create a new ServiceDeployer
func NewServiceDeployer() *ServiceDeployer {
var dep ServiceDeployer
- dep.Deployment = NewDeploymentApplication()
+ dep.Deployment = NewDeploymentProject()
dep.IsInteractive = true
dep.DeployActionInPackage = true
dep.DependencyMaster = make(map[string]utils.DependencyRecord)
@@ -139,9 +139,15 @@ func (deployer *ServiceDeployer) ConstructDeploymentPlan() error {
return err
}
- applicationName := ""
- if len(manifest.Application.Packages) != 0 {
- applicationName = manifest.Application.Name
+ projectName := ""
+ if len(manifest.GetProject().Packages) != 0 {
+ projectName = manifest.GetProject().Name
+ }
+
+ // (TODO) delete this warning after deprecating application in manifest file
+ if manifest.Application.Name != "" {
+ warningString := wski18n.T("WARNING: application in manifest file will soon be deprecated, please use project instead.\n")
+ whisk.Debug(whisk.DbgWarn, warningString)
}
// process deployment file
@@ -152,24 +158,30 @@ func (deployer *ServiceDeployer) ConstructDeploymentPlan() error {
if err != nil {
return err
}
- // compare the name of the application
- if len(deploymentReader.DeploymentDescriptor.Application.Packages) != 0 && len(applicationName) != 0 {
- appNameDeploy := deploymentReader.DeploymentDescriptor.Application.Name
- if appNameDeploy != applicationName {
- errorString := wski18n.T("The name of the application {{.appNameDeploy}} in deployment file at [{{.deploymentFile}}] does not match the name of the application {{.appNameManifest}}} in manifest file at [{{.manifestFile}}].",
- map[string]interface{}{"appNameDeploy": appNameDeploy, "deploymentFile": deployer.DeploymentPath,
- "appNameManifest": applicationName, "manifestFile": deployer.ManifestPath })
+
+ // (TODO) delete this warning after deprecating application in deployment file
+ if deploymentReader.DeploymentDescriptor.Application.Name != "" {
+ warningString := wski18n.T("WARNING: application in deployment file will soon be deprecated, please use project instead.\n")
+ whisk.Debug(whisk.DbgWarn, warningString)
+ }
+
+ // compare the name of the project/application
+ if len(deploymentReader.DeploymentDescriptor.GetProject().Packages) != 0 && len(projectName) != 0 {
+ projectNameDeploy := deploymentReader.DeploymentDescriptor.GetProject().Name
+ if projectNameDeploy != projectName {
+ 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.NewInputYamlFormatError(errorString)
}
}
-
deploymentReader.BindAssets()
}
return err
}
-func (deployer *ServiceDeployer) ConstructUnDeploymentPlan() (*DeploymentApplication, error) {
+func (deployer *ServiceDeployer) ConstructUnDeploymentPlan() (*DeploymentProject, error) {
var manifestReader = NewManfiestReader(deployer)
manifestReader.IsUndeploy = true
@@ -203,10 +215,16 @@ func (deployer *ServiceDeployer) ConstructUnDeploymentPlan() (*DeploymentApplica
return deployer.Deployment, err
}
- applicationName := ""
- if len(manifest.Application.Packages) != 0 {
- applicationName = manifest.Application.Name
- }
+ projectName := ""
+ if len(manifest.GetProject().Packages) != 0 {
+ projectName = manifest.GetProject().Name
+ }
+
+ // (TODO) delete this warning after deprecating application in manifest file
+ if manifest.Application.Name != "" {
+ warningString := wski18n.T("WARNING: application in manifest file will soon be deprecated, please use project instead.\n")
+ whisk.Debug(whisk.DbgWarn, warningString)
+ }
// process deployment file
if utils.FileExists(deployer.DeploymentPath) {
@@ -215,16 +233,21 @@ func (deployer *ServiceDeployer) ConstructUnDeploymentPlan() (*DeploymentApplica
if err != nil {
return deployer.Deployment, err
}
- // compare the name of the application
- if len(deploymentReader.DeploymentDescriptor.Application.Packages) != 0 && len(applicationName) != 0 {
- appNameDeploy := deploymentReader.DeploymentDescriptor.Application.Name
- if appNameDeploy != applicationName {
- errorString := wski18n.T("The name of the application {{.appNameDeploy}} in deployment file at [{{.deploymentFile}}] does not match the name of the application {{.appNameManifest}}} in manifest file at [{{.manifestFile}}].",
- map[string]interface{}{"appNameDeploy": appNameDeploy, "deploymentFile": deployer.DeploymentPath,
- "appNameManifest": applicationName, "manifestFile": deployer.ManifestPath })
- return deployer.Deployment, utils.NewInputYamlFormatError(errorString)
- }
- }
+ // (TODO) delete this warning after deprecating application in deployment file
+ if deploymentReader.DeploymentDescriptor.Application.Name != "" {
+ warningString := wski18n.T("WARNING: application in deployment file will soon be deprecated, please use project instead.\n")
+ whisk.Debug(whisk.DbgWarn, warningString)
+ }
+ // compare the name of the application
+ if len(deploymentReader.DeploymentDescriptor.GetProject().Packages) != 0 && len(projectName) != 0 {
+ projectNameDeploy := deploymentReader.DeploymentDescriptor.GetProject().Name
+ if projectNameDeploy != projectName {
+ 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.NewInputYamlFormatError(errorString)
+ }
+ }
deploymentReader.BindAssets()
}
@@ -590,8 +613,8 @@ func (deployer *ServiceDeployer) createFeedAction(trigger *whisk.Trigger, feedNa
deployer.Client.Namespace = namespace
if err != nil {
- // Remove the created trigger
- deployer.Client.Triggers.Delete(trigger.Name)
+ // Remove the created trigger
+ deployer.Client.Triggers.Delete(trigger.Name)
wskErr := err.(*whisk.WskError)
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)})
@@ -685,7 +708,7 @@ func (deployer *ServiceDeployer) createApi(api *whisk.ApiCreateRequest) error {
return nil
}
-func (deployer *ServiceDeployer) UnDeploy(verifiedPlan *DeploymentApplication) error {
+func (deployer *ServiceDeployer) UnDeploy(verifiedPlan *DeploymentProject) error {
if deployer.IsInteractive == true {
deployer.printDeploymentAssets(verifiedPlan)
reader := bufio.NewReader(os.Stdin)
@@ -729,7 +752,7 @@ func (deployer *ServiceDeployer) UnDeploy(verifiedPlan *DeploymentApplication) e
}
-func (deployer *ServiceDeployer) unDeployAssets(verifiedPlan *DeploymentApplication) error {
+func (deployer *ServiceDeployer) unDeployAssets(verifiedPlan *DeploymentProject) error {
if err := deployer.UnDeployActions(verifiedPlan); err != nil {
return err
@@ -813,7 +836,7 @@ func (deployer *ServiceDeployer) UnDeployDependencies() error {
return nil
}
-func (deployer *ServiceDeployer) UnDeployPackages(deployment *DeploymentApplication) error {
+func (deployer *ServiceDeployer) UnDeployPackages(deployment *DeploymentProject) error {
for _, pack := range deployment.Packages {
err := deployer.deletePackage(pack.Package)
if err != nil {
@@ -823,7 +846,7 @@ func (deployer *ServiceDeployer) UnDeployPackages(deployment *DeploymentApplicat
return nil
}
-func (deployer *ServiceDeployer) UnDeploySequences(deployment *DeploymentApplication) error {
+func (deployer *ServiceDeployer) UnDeploySequences(deployment *DeploymentProject) error {
for _, pack := range deployment.Packages {
for _, action := range pack.Sequences {
@@ -837,7 +860,7 @@ func (deployer *ServiceDeployer) UnDeploySequences(deployment *DeploymentApplica
}
// DeployActions into OpenWhisk
-func (deployer *ServiceDeployer) UnDeployActions(deployment *DeploymentApplication) error {
+func (deployer *ServiceDeployer) UnDeployActions(deployment *DeploymentProject) error {
for _, pack := range deployment.Packages {
for _, action := range pack.Actions {
@@ -851,7 +874,7 @@ func (deployer *ServiceDeployer) UnDeployActions(deployment *DeploymentApplicati
}
// Deploy Triggers into OpenWhisk
-func (deployer *ServiceDeployer) UnDeployTriggers(deployment *DeploymentApplication) error {
+func (deployer *ServiceDeployer) UnDeployTriggers(deployment *DeploymentProject) error {
for _, trigger := range deployment.Triggers {
if feedname, isFeed := utils.IsFeedAction(trigger); isFeed {
@@ -872,7 +895,7 @@ func (deployer *ServiceDeployer) UnDeployTriggers(deployment *DeploymentApplicat
}
// Deploy Rules into OpenWhisk
-func (deployer *ServiceDeployer) UnDeployRules(deployment *DeploymentApplication) error {
+func (deployer *ServiceDeployer) UnDeployRules(deployment *DeploymentProject) error {
for _, rule := range deployment.Rules {
err := deployer.deleteRule(rule)
@@ -926,40 +949,40 @@ func (deployer *ServiceDeployer) deleteFeedAction(trigger *whisk.Trigger, feedNa
params = append(params, whisk.KeyValue{Key: "lifecycleEvent", Value: "DELETE"})
params = append(params, whisk.KeyValue{Key: "triggerName", Value: "/" + deployer.Client.Namespace + "/" + trigger.Name})
- parameters := make(map[string]interface{})
- for _, keyVal := range params {
- parameters[keyVal.Key] = keyVal.Value
- }
-
- qName, err := utils.ParseQualifiedName(feedName, deployer.ClientConfig.Namespace)
- if err != nil {
- return err
- }
-
- namespace := deployer.Client.Namespace
- deployer.Client.Namespace = qName.Namespace
- _, _, err = deployer.Client.Actions.Invoke(qName.EntityName, parameters, true, true)
- deployer.Client.Namespace = namespace
-
- 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",
- map[string]interface{}{"err": wskErr.Error(), "code": strconv.Itoa(wskErr.ExitCode)})
- whisk.Debug(whisk.DbgError, errString)
- return utils.NewWhiskClientError(wskErr.Error(), wskErr.ExitCode)
-
- } else {
- trigger.Parameters = nil
-
- _, _, err := deployer.Client.Triggers.Delete(trigger.Name)
- if err != nil {
- wskErr := err.(*whisk.WskError)
- 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)
- }
- }
+ parameters := make(map[string]interface{})
+ for _, keyVal := range params {
+ parameters[keyVal.Key] = keyVal.Value
+ }
+
+ qName, err := utils.ParseQualifiedName(feedName, deployer.ClientConfig.Namespace)
+ if err != nil {
+ return err
+ }
+
+ namespace := deployer.Client.Namespace
+ deployer.Client.Namespace = qName.Namespace
+ _, _, err = deployer.Client.Actions.Invoke(qName.EntityName, parameters, true, true)
+ deployer.Client.Namespace = namespace
+
+ 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",
+ map[string]interface{}{"err": wskErr.Error(), "code": strconv.Itoa(wskErr.ExitCode)})
+ whisk.Debug(whisk.DbgError, errString)
+ return utils.NewWhiskClientError(wskErr.Error(), wskErr.ExitCode)
+
+ } else {
+ trigger.Parameters = nil
+
+ _, _, err := deployer.Client.Triggers.Delete(trigger.Name)
+ if err != nil {
+ wskErr := err.(*whisk.WskError)
+ 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 nil
}
@@ -1037,7 +1060,7 @@ func (deployer *ServiceDeployer) getQualifiedName(name string, namespace string)
}
}
-func (deployer *ServiceDeployer) printDeploymentAssets(assets *DeploymentApplication) {
+func (deployer *ServiceDeployer) printDeploymentAssets(assets *DeploymentProject) {
// pretty ASCII OpenWhisk graphic
utils.PrintOpenWhiskOutputln(" ____ ___ _ _ _ _ _\n /\\ \\ / _ \\ _ __ ___ _ __ | | | | |__ (_)___| | __\n /\\ /__\\ \\ | | | | '_ \\ / _ \\ '_ \\| | | | '_ \\| / __| |/ /\n / \\____ \\ / | |_| | |_) | __/ | | | |/\\| | | | | \\__ \\ <\n \\ \\ / \\/ \\___/| .__/ \\___|_| |_|__/\\__|_| |_|_|___/_|\\_\\ \n \\___\\/ |_|\n")
@@ -1070,13 +1093,12 @@ func (deployer *ServiceDeployer) printDeploymentAssets(assets *DeploymentApplica
utils.PrintOpenWhiskOutputln(" bindings: ")
for _, p := range action.Action.Parameters {
- if( reflect.TypeOf(p.Value).Kind() == reflect.Map ) {
- if _, ok := p.Value.(map[interface{}]interface{}); ok {
- var temp map[string]interface{} =
- utils.ConvertInterfaceMap(p.Value.(map[interface{}]interface{}))
+ if reflect.TypeOf(p.Value).Kind() == reflect.Map {
+ if _, ok := p.Value.(map[interface{}]interface{}); ok {
+ var temp map[string]interface{} = utils.ConvertInterfaceMap(p.Value.(map[interface{}]interface{}))
fmt.Printf(" - %s : %v\n", p.Key, temp)
} else {
- jsonValue,err := utils.PrettyJSON(p.Value)
+ jsonValue, err := utils.PrettyJSON(p.Value)
if err != nil {
fmt.Printf(" - %s : %s\n", p.Key, utils.UNKNOWN_VALUE)
} else {
diff --git a/deployers/verifier.go b/deployers/verifier.go
index cdc6f8a..116453f 100644
--- a/deployers/verifier.go
+++ b/deployers/verifier.go
@@ -23,7 +23,7 @@ import (
"github.com/apache/incubator-openwhisk-client-go/whisk"
)
-// The verifier will filter the deployer against the target DeploymentApplication
+// The verifier will filter the deployer against the target DeploymentProject
// the deployer will query the OpenWhisk platform for already deployed entities.
// We assume the deployer and the manifest are targeted for the same namespace.
type Verifier struct {
@@ -31,16 +31,16 @@ type Verifier struct {
type Filter interface {
// Perform some filter.
- Filter(deployer *ServiceDeployer, target *DeploymentApplication) (filtered *DeploymentApplication, err error)
+ Filter(deployer *ServiceDeployer, target *DeploymentProject) (filtered *DeploymentProject, err error)
// Perform some queries.
- Query(deployer *ServiceDeployer) (da *DeploymentApplication, err error)
+ Query(deployer *ServiceDeployer) (da *DeploymentProject, err error)
}
-func (vf *Verifier) Query(deployer *ServiceDeployer) (da *DeploymentApplication, err error) {
+func (vf *Verifier) Query(deployer *ServiceDeployer) (da *DeploymentProject, err error) {
pkgoptions := &whisk.PackageListOptions{false, 0, 0, 0, false}
packages, _, err := deployer.Client.Packages.List(pkgoptions)
- da = NewDeploymentApplication()
+ da = NewDeploymentProject()
for _, pa := range packages {
deppack := NewDeploymentPackage()
deppack.Package, _ = convert(&pa)
@@ -49,7 +49,7 @@ func (vf *Verifier) Query(deployer *ServiceDeployer) (da *DeploymentApplication,
return da, nil
}
-func (vf *Verifier) Filter(deployer *ServiceDeployer, target *DeploymentApplication) (rs *DeploymentApplication, err error) {
+func (vf *Verifier) Filter(deployer *ServiceDeployer, target *DeploymentProject) (rs *DeploymentProject, err error) {
//substract
for _, pa := range target.Packages {
for _, dpa := range deployer.Deployment.Packages {
@@ -59,7 +59,7 @@ func (vf *Verifier) Filter(deployer *ServiceDeployer, target *DeploymentApplicat
}
}
- depApp := NewDeploymentApplication()
+ depApp := NewDeploymentProject()
fmt.Printf("Target Packages are %#v\n", target.Packages)
depApp.Packages = target.Packages
return depApp, nil
diff --git a/deployers/whiskclient.go b/deployers/whiskclient.go
index 702f8b9..b0eac7c 100644
--- a/deployers/whiskclient.go
+++ b/deployers/whiskclient.go
@@ -98,9 +98,9 @@ func NewWhiskConfig(proppath string, deploymentPath string, manifestPath string,
if utils.FileExists(deploymentPath) {
mm := parsers.NewYAMLParser()
deployment, _ := mm.ParseDeployment(deploymentPath)
- credential = GetPropertyValue(credential, deployment.Application.Credential, path.Base(deploymentPath))
- namespace = GetPropertyValue(namespace, deployment.Application.Namespace, path.Base(deploymentPath))
- apiHost = GetPropertyValue(apiHost, deployment.Application.ApiHost, path.Base(deploymentPath))
+ credential = GetPropertyValue(credential, deployment.GetProject().Credential, path.Base(deploymentPath))
+ namespace = GetPropertyValue(namespace, deployment.GetProject().Namespace, path.Base(deploymentPath))
+ apiHost = GetPropertyValue(apiHost, deployment.GetProject().ApiHost, path.Base(deploymentPath))
}
}
diff --git a/docs/examples/deployment_hello_world_triggerrule_bindings.yaml b/docs/examples/deployment_hello_world_triggerrule_bindings.yaml
index b35b778..51a1018 100644
--- a/docs/examples/deployment_hello_world_triggerrule_bindings.yaml
+++ b/docs/examples/deployment_hello_world_triggerrule_bindings.yaml
@@ -1,4 +1,4 @@
-application:
+project:
packages:
hello_world_package:
triggers:
diff --git a/docs/examples/deployment_hello_world_triggerrule_unbound.yaml b/docs/examples/deployment_hello_world_triggerrule_unbound.yaml
index f325753..714f17d 100644
--- a/docs/examples/deployment_hello_world_triggerrule_unbound.yaml
+++ b/docs/examples/deployment_hello_world_triggerrule_unbound.yaml
@@ -1,4 +1,4 @@
-application:
+project:
package:
hello_world_package:
triggers:
diff --git a/parsers/deploy_parser.go b/parsers/deploy_parser.go
index ee9e041..31ad115 100644
--- a/parsers/deploy_parser.go
+++ b/parsers/deploy_parser.go
@@ -72,9 +72,9 @@ func (dm *YAMLParser) convertErrorToLinesMsgs(errorString string) (lines []strin
return
}
-//********************Application functions*************************//
+//********************Project functions*************************//
//This is for parse the deployment yaml file.
-func (app *Application) GetPackageList() []Package {
+func (app *Project) GetPackageList() []Package {
var s1 []Package = make([]Package, 0)
for _, pkg := range app.Packages {
pkg.Packagename = pkg.Packagename
diff --git a/parsers/deploy_parser_test.go b/parsers/deploy_parser_test.go
index 30992b9..7d0bfae 100644
--- a/parsers/deploy_parser_test.go
+++ b/parsers/deploy_parser_test.go
@@ -21,100 +21,100 @@ package parsers
import (
"github.com/stretchr/testify/assert"
+ "io/ioutil"
"os"
"testing"
- "io/ioutil"
)
func createTmpfile(data string, filename string) (f *os.File, err error) {
- dir, _ := os.Getwd()
- tmpfile, err := ioutil.TempFile(dir, filename)
- if err != nil {
- return nil, err
- }
- _, err = tmpfile.Write([]byte(data))
- if err != nil {
- return tmpfile, err
- }
- return tmpfile, nil
+ dir, _ := os.Getwd()
+ tmpfile, err := ioutil.TempFile(dir, filename)
+ if err != nil {
+ return nil, err
+ }
+ _, err = tmpfile.Write([]byte(data))
+ if err != nil {
+ return tmpfile, err
+ }
+ return tmpfile, nil
}
func TestInvalidKeyDeploymentYaml(t *testing.T) {
- data :=`application:
+ data := `project:
name: wskdeploy-samples
invalidKey: test`
- tmpfile, err := createTmpfile(data, "deployment_parser_test_")
- if err != nil {
- assert.Fail(t, "Failed to create temp file")
- }
- defer func() {
- tmpfile.Close()
- os.Remove(tmpfile.Name())
- }()
- p := NewYAMLParser()
- _, err = p.ParseDeployment(tmpfile.Name())
- assert.NotNil(t, err)
- // go-yaml/yaml prints the wrong line number for mapping values. It should be 3.
- assert.Contains(t, err.Error(), "line 2: field invalidKey not found in struct parsers.Application")
+ tmpfile, err := createTmpfile(data, "deployment_parser_test_")
+ if err != nil {
+ assert.Fail(t, "Failed to create temp file")
+ }
+ defer func() {
+ tmpfile.Close()
+ os.Remove(tmpfile.Name())
+ }()
+ p := NewYAMLParser()
+ _, err = p.ParseDeployment(tmpfile.Name())
+ assert.NotNil(t, err)
+ // go-yaml/yaml prints the wrong line number for mapping values. It should be 3.
+ assert.Contains(t, err.Error(), "line 2: field invalidKey not found in struct parsers.Project")
}
func TestMappingValueDeploymentYaml(t *testing.T) {
- data :=`application:
+ data := `project:
name: wskdeploy-samples
packages: test`
- tmpfile, err := createTmpfile(data, "deployment_parser_test_")
- if err != nil {
- assert.Fail(t, "Failed to create temp file")
- }
- defer func() {
- tmpfile.Close()
- os.Remove(tmpfile.Name())
- }()
- p := NewYAMLParser()
- _, err = p.ParseDeployment(tmpfile.Name())
- assert.NotNil(t, err)
- // go-yaml/yaml prints the wrong line number for mapping values. It should be 3.
- assert.Contains(t, err.Error(), "line 2: mapping values are not allowed in this context")
+ tmpfile, err := createTmpfile(data, "deployment_parser_test_")
+ if err != nil {
+ assert.Fail(t, "Failed to create temp file")
+ }
+ defer func() {
+ tmpfile.Close()
+ os.Remove(tmpfile.Name())
+ }()
+ p := NewYAMLParser()
+ _, err = p.ParseDeployment(tmpfile.Name())
+ assert.NotNil(t, err)
+ // go-yaml/yaml prints the wrong line number for mapping values. It should be 3.
+ assert.Contains(t, err.Error(), "line 2: mapping values are not allowed in this context")
}
func TestMissingRootNodeDeploymentYaml(t *testing.T) {
- data :=`name: wskdeploy-samples`
- tmpfile, err := createTmpfile(data, "deployment_parser_test_")
- if err != nil {
- assert.Fail(t, "Failed to create temp file")
- }
- defer func() {
- tmpfile.Close()
- os.Remove(tmpfile.Name())
- }()
- p := NewYAMLParser()
- _, err = p.ParseDeployment(tmpfile.Name())
- assert.NotNil(t, err)
- // go-yaml/yaml prints the wrong line number for mapping values. It should be 3.
- assert.Contains(t, err.Error(), "line 1: field name not found in struct parsers.YAML")
+ data := `name: wskdeploy-samples`
+ tmpfile, err := createTmpfile(data, "deployment_parser_test_")
+ if err != nil {
+ assert.Fail(t, "Failed to create temp file")
+ }
+ defer func() {
+ tmpfile.Close()
+ os.Remove(tmpfile.Name())
+ }()
+ p := NewYAMLParser()
+ _, err = p.ParseDeployment(tmpfile.Name())
+ assert.NotNil(t, err)
+ // go-yaml/yaml prints the wrong line number for mapping values. It should be 3.
+ assert.Contains(t, err.Error(), "line 1: field name not found in struct parsers.YAML")
}
-func TestParseDeploymentYAML_Application(t *testing.T) {
+func TestParseDeploymentYAML_Project(t *testing.T) {
//var deployment utils.DeploymentYAML
mm := NewYAMLParser()
- deployment, _ := mm.ParseDeployment("../tests/dat/deployment_data_application.yaml")
+ deployment, _ := mm.ParseDeployment("../tests/dat/deployment_data_project.yaml")
- //get and verify application name
- assert.Equal(t, "wskdeploy-samples", deployment.Application.Name, "Get application name failed.")
- assert.Equal(t, "/wskdeploy/samples/", deployment.Application.Namespace, "Get application namespace failed.")
- assert.Equal(t, "user-credential", deployment.Application.Credential, "Get application credential failed.")
- assert.Equal(t, "172.17.0.1", deployment.Application.ApiHost, "Get application api host failed.")
+ //get and verify project name
+ assert.Equal(t, "wskdeploy-samples", deployment.GetProject().Name, "Get project name failed.")
+ assert.Equal(t, "/wskdeploy/samples/", deployment.GetProject().Namespace, "Get project namespace failed.")
+ assert.Equal(t, "user-credential", deployment.GetProject().Credential, "Get project credential failed.")
+ assert.Equal(t, "172.17.0.1", deployment.GetProject().ApiHost, "Get project api host failed.")
}
-func TestParseDeploymentYAML_Application_Package(t *testing.T) {
+func TestParseDeploymentYAML_Project_Package(t *testing.T) {
//var deployment utils.DeploymentYAML
mm := NewYAMLParser()
- deployment, _ := mm.ParseDeployment("../tests/dat/deployment_data_application_package.yaml")
+ deployment, _ := mm.ParseDeployment("../tests/dat/deployment_data_project_package.yaml")
- assert.Equal(t, 1, len(deployment.Application.Packages), "Get package list failed.")
- for pkg_name := range deployment.Application.Packages {
+ assert.Equal(t, 1, len(deployment.GetProject().Packages), "Get package list failed.")
+ for pkg_name := range deployment.GetProject().Packages {
assert.Equal(t, "test_package", pkg_name, "Get package name failed.")
- var pkg = deployment.Application.Packages[pkg_name]
+ var pkg = deployment.GetProject().Packages[pkg_name]
assert.Equal(t, "/wskdeploy/samples/test", pkg.Namespace, "Get package namespace failed.")
assert.Equal(t, "12345678ABCDEF", pkg.Credential, "Get package credential failed.")
assert.Equal(t, 1, len(pkg.Inputs), "Get package input list failed.")
@@ -127,53 +127,53 @@ func TestParseDeploymentYAML_Application_Package(t *testing.T) {
}
func TestParseDeploymentYAML_Packages(t *testing.T) {
- //var deployment utils.DeploymentYAML
- mm := NewYAMLParser()
- deployment, _ := mm.ParseDeployment("../tests/dat/deployment_data_packages.yaml")
+ //var deployment utils.DeploymentYAML
+ mm := NewYAMLParser()
+ deployment, _ := mm.ParseDeployment("../tests/dat/deployment_data_packages.yaml")
- assert.Equal(t, 0, len(deployment.Application.Packages), "Packages under application are empty.")
- assert.Equal(t, 0, len(deployment.Application.Package.Packagename), "Package name is empty.")
- assert.Equal(t, 1, len(deployment.Packages), "Packages are available.")
- for pkg_name := range deployment.Packages {
- assert.Equal(t, "test_package", pkg_name, "Get package name failed.")
- var pkg = deployment.Packages[pkg_name]
- assert.Equal(t, "/wskdeploy/samples/test", pkg.Namespace, "Get package namespace failed.")
- assert.Equal(t, "12345678ABCDEF", pkg.Credential, "Get package credential failed.")
- assert.Equal(t, 1, len(pkg.Inputs), "Get package input list failed.")
- //get and verify inputs
- for param_name, param := range pkg.Inputs {
- assert.Equal(t, "value", param.Value, "Get input value failed.")
- assert.Equal(t, "param", param_name, "Get input param name failed.")
- }
- }
+ assert.Equal(t, 0, len(deployment.GetProject().Packages), "Packages under project are empty.")
+ assert.Equal(t, 0, len(deployment.GetProject().Package.Packagename), "Package name is empty.")
+ assert.Equal(t, 1, len(deployment.Packages), "Packages are available.")
+ for pkg_name := range deployment.Packages {
+ assert.Equal(t, "test_package", pkg_name, "Get package name failed.")
+ var pkg = deployment.Packages[pkg_name]
+ assert.Equal(t, "/wskdeploy/samples/test", pkg.Namespace, "Get package namespace failed.")
+ assert.Equal(t, "12345678ABCDEF", pkg.Credential, "Get package credential failed.")
+ assert.Equal(t, 1, len(pkg.Inputs), "Get package input list failed.")
+ //get and verify inputs
+ for param_name, param := range pkg.Inputs {
+ assert.Equal(t, "value", param.Value, "Get input value failed.")
+ assert.Equal(t, "param", param_name, "Get input param name failed.")
+ }
+ }
}
func TestParseDeploymentYAML_Package(t *testing.T) {
- //var deployment utils.DeploymentYAML
- mm := NewYAMLParser()
- deployment, _ := mm.ParseDeployment("../tests/dat/deployment_data_package.yaml")
+ //var deployment utils.DeploymentYAML
+ mm := NewYAMLParser()
+ deployment, _ := mm.ParseDeployment("../tests/dat/deployment_data_package.yaml")
- assert.Equal(t, 0, len(deployment.Application.Packages), "Get package list failed.")
- assert.Equal(t, 0, len(deployment.Application.Package.Packagename), "Package name is empty.")
- assert.Equal(t, 0, len(deployment.Packages), "Get package list failed.")
- assert.Equal(t, "test_package", deployment.Package.Packagename, "Get package name failed.")
- assert.Equal(t, "/wskdeploy/samples/test", deployment.Package.Namespace, "Get package namespace failed.")
- assert.Equal(t, "12345678ABCDEF", deployment.Package.Credential, "Get package credential failed.")
- assert.Equal(t, 1, len(deployment.Package.Inputs), "Get package input list failed.")
- //get and verify inputs
- for param_name, param := range deployment.Package.Inputs {
- assert.Equal(t, "value", param.Value, "Get input value failed.")
- assert.Equal(t, "param", param_name, "Get input param name failed.")
- }
+ assert.Equal(t, 0, len(deployment.GetProject().Packages), "Get package list failed.")
+ assert.Equal(t, 0, len(deployment.GetProject().Package.Packagename), "Package name is empty.")
+ assert.Equal(t, 0, len(deployment.Packages), "Get package list failed.")
+ assert.Equal(t, "test_package", deployment.Package.Packagename, "Get package name failed.")
+ assert.Equal(t, "/wskdeploy/samples/test", deployment.Package.Namespace, "Get package namespace failed.")
+ assert.Equal(t, "12345678ABCDEF", deployment.Package.Credential, "Get package credential failed.")
+ assert.Equal(t, 1, len(deployment.Package.Inputs), "Get package input list failed.")
+ //get and verify inputs
+ for param_name, param := range deployment.Package.Inputs {
+ assert.Equal(t, "value", param.Value, "Get input value failed.")
+ assert.Equal(t, "param", param_name, "Get input param name failed.")
+ }
}
func TestParseDeploymentYAML_Action(t *testing.T) {
mm := NewYAMLParser()
- deployment, _ := mm.ParseDeployment("../tests/dat/deployment_data_application_package.yaml")
+ deployment, _ := mm.ParseDeployment("../tests/dat/deployment_data_project_package.yaml")
- for pkg_name := range deployment.Application.Packages {
+ for pkg_name := range deployment.GetProject().Packages {
- var pkg = deployment.Application.Packages[pkg_name]
+ var pkg = deployment.GetProject().Packages[pkg_name]
for action_name := range pkg.Actions {
assert.Equal(t, "hello", action_name, "Get action name failed.")
var action = pkg.Actions[action_name]
@@ -195,106 +195,108 @@ func TestParseDeploymentYAML_Action(t *testing.T) {
}
func TestParseDeploymentYAML_Packages_Env(t *testing.T) {
- testPackage := "test_package"
- os.Setenv("package_name", testPackage)
- assert.Equal(t, testPackage, os.Getenv("package_name"))
- //var deployment utils.DeploymentYAML
- mm := NewYAMLParser()
- deployment, _ := mm.ParseDeployment("../tests/dat/deployment_data_packages_env_var.yaml")
+ testPackage := "test_package"
+ os.Setenv("package_name", testPackage)
+ assert.Equal(t, testPackage, os.Getenv("package_name"))
+ //var deployment utils.DeploymentYAML
+ mm := NewYAMLParser()
+ deployment, _ := mm.ParseDeployment("../tests/dat/deployment_data_packages_env_var.yaml")
- assert.Equal(t, 0, len(deployment.Application.Packages), "Packages under application are empty.")
- assert.Equal(t, 0, len(deployment.Application.Package.Packagename), "Package name is empty.")
- assert.Equal(t, 1, len(deployment.Packages), "Packages are available.")
- for pkg_name := range deployment.Packages {
- assert.Equal(t, testPackage, pkg_name, "Get package name failed.")
- var pkg = deployment.Packages[pkg_name]
- assert.Equal(t, "/wskdeploy/samples/test", pkg.Namespace, "Get package namespace failed.")
- assert.Equal(t, "12345678ABCDEF", pkg.Credential, "Get package credential failed.")
- assert.Equal(t, 1, len(pkg.Inputs), "Get package input list failed.")
- //get and verify inputs
- for param_name, param := range pkg.Inputs {
- assert.Equal(t, "value", param.Value, "Get input value failed.")
- assert.Equal(t, "param", param_name, "Get input param name failed.")
- }
- }
+ assert.Equal(t, 0, len(deployment.GetProject().Packages), "Packages under project are empty.")
+ assert.Equal(t, 0, len(deployment.GetProject().Package.Packagename), "Package name is empty.")
+ assert.Equal(t, 1, len(deployment.Packages), "Packages are available.")
+ for pkg_name := range deployment.Packages {
+ assert.Equal(t, testPackage, pkg_name, "Get package name failed.")
+ var pkg = deployment.Packages[pkg_name]
+ assert.Equal(t, "/wskdeploy/samples/test", pkg.Namespace, "Get package namespace failed.")
+ assert.Equal(t, "12345678ABCDEF", pkg.Credential, "Get package credential failed.")
+ assert.Equal(t, 1, len(pkg.Inputs), "Get package input list failed.")
+ //get and verify inputs
+ for param_name, param := range pkg.Inputs {
+ assert.Equal(t, "value", param.Value, "Get input value failed.")
+ assert.Equal(t, "param", param_name, "Get input param name failed.")
+ }
+ }
}
func TestParseDeploymentYAML_Package_Env(t *testing.T) {
- testPackage := "test_package"
- os.Setenv("package_name", testPackage)
- assert.Equal(t, testPackage, os.Getenv("package_name"))
- //var deployment utils.DeploymentYAML
- mm := NewYAMLParser()
- deployment, _ := mm.ParseDeployment("../tests/dat/deployment_data_package_env_var.yaml")
+ testPackage := "test_package"
+ os.Setenv("package_name", testPackage)
+ assert.Equal(t, testPackage, os.Getenv("package_name"))
+ //var deployment utils.DeploymentYAML
+ mm := NewYAMLParser()
+ deployment, _ := mm.ParseDeployment("../tests/dat/deployment_data_package_env_var.yaml")
- assert.Equal(t, 0, len(deployment.Application.Packages), "Get package list failed.")
- assert.Equal(t, 0, len(deployment.Application.Package.Packagename), "Package name is empty.")
- assert.Equal(t, 0, len(deployment.Packages), "Get package list failed.")
- assert.Equal(t, testPackage, deployment.Package.Packagename, "Get package name failed.")
- assert.Equal(t, "/wskdeploy/samples/test", deployment.Package.Namespace, "Get package namespace failed.")
- assert.Equal(t, "12345678ABCDEF", deployment.Package.Credential, "Get package credential failed.")
- assert.Equal(t, 1, len(deployment.Package.Inputs), "Get package input list failed.")
- //get and verify inputs
- for param_name, param := range deployment.Package.Inputs {
- assert.Equal(t, "value", param.Value, "Get input value failed.")
- assert.Equal(t, "param", param_name, "Get input param name failed.")
- }
+ assert.Equal(t, 0, len(deployment.GetProject().Packages), "Get package list failed.")
+ assert.Equal(t, 0, len(deployment.GetProject().Package.Packagename), "Package name is empty.")
+ assert.Equal(t, 0, len(deployment.Packages), "Get package list failed.")
+ assert.Equal(t, testPackage, deployment.Package.Packagename, "Get package name failed.")
+ assert.Equal(t, "/wskdeploy/samples/test", deployment.Package.Namespace, "Get package namespace failed.")
+ assert.Equal(t, "12345678ABCDEF", deployment.Package.Credential, "Get package credential failed.")
+ assert.Equal(t, 1, len(deployment.Package.Inputs), "Get package input list failed.")
+ //get and verify inputs
+ for param_name, param := range deployment.Package.Inputs {
+ assert.Equal(t, "value", param.Value, "Get input value failed.")
+ assert.Equal(t, "param", param_name, "Get input param name failed.")
+ }
}
-func TestParseDeploymentYAML_Application_Package_Env(t *testing.T) {
- testPackage := "test_package"
- os.Setenv("package_name", testPackage)
- assert.Equal(t, testPackage, os.Getenv("package_name"))
- mm := NewYAMLParser()
- deployment, _ := mm.ParseDeployment("../tests/dat/deployment_data_application_package_env_var.yaml")
- assert.Equal(t, testPackage, deployment.Application.Package.Packagename, "Get package name failed.")
- assert.Equal(t, "/wskdeploy/samples/test", deployment.Application.Package.Namespace, "Get package namespace failed.")
- assert.Equal(t, "12345678ABCDEF", deployment.Application.Package.Credential, "Get package credential failed.")
- assert.Equal(t, 1, len(deployment.Application.Package.Inputs), "Get package input list failed.")
+func TestParseDeploymentYAML_Project_Package_Env(t *testing.T) {
+ testPackage := "test_package"
+ os.Setenv("package_name", testPackage)
+ assert.Equal(t, testPackage, os.Getenv("package_name"))
+ mm := NewYAMLParser()
+ deployment, _ := mm.ParseDeployment("../tests/dat/deployment_data_project_package_env_var.yaml")
+ assert.Equal(t, testPackage, deployment.GetProject().Package.Packagename, "Get package name failed.")
+ assert.Equal(t, "/wskdeploy/samples/test", deployment.GetProject().Package.Namespace, "Get package namespace failed.")
+ assert.Equal(t, "12345678ABCDEF", deployment.GetProject().Package.Credential, "Get package credential failed.")
+ assert.Equal(t, 1, len(deployment.GetProject().Package.Inputs), "Get package input list failed.")
- // Verify the case of using concatenation.
- deployment, _ = mm.ParseDeployment("../tests/dat/deployment_data_application_package_env_var_con.yaml")
- assert.Equal(t, "test_package-test_package", deployment.Application.Package.Packagename, "Get package name failed.")
+ // Verify the case of using concatenation.
+ deployment, _ = mm.ParseDeployment("../tests/dat/deployment_data_project_package_env_var_con.yaml")
+ assert.Equal(t, "test_package-test_package", deployment.GetProject().Package.Packagename, "Get package name failed.")
}
-func TestParseDeploymentYAML_Application_Packages_Env(t *testing.T) {
- testPackage := "test_package"
- os.Setenv("package_name", testPackage)
- testPackageSec := "test_package_second"
- os.Setenv("package_name_second", testPackageSec)
- assert.Equal(t, testPackage, os.Getenv("package_name"))
- mm := NewYAMLParser()
- deployment, _ := mm.ParseDeployment("../tests/dat/deployment_data_application_packages_env_var.yaml")
+func TestParseDeploymentYAML_Project_Packages_Env(t *testing.T) {
+ testPackage := "test_package"
+ os.Setenv("package_name", testPackage)
+ testPackageSec := "test_package_second"
+ os.Setenv("package_name_second", testPackageSec)
+ assert.Equal(t, testPackage, os.Getenv("package_name"))
+ mm := NewYAMLParser()
+ deployment, _ := mm.ParseDeployment("../tests/dat/deployment_data_project_packages_env_var.yaml")
- expectedPackages := [2]string{testPackage, testPackageSec}
- assert.Equal(t, 2, len(deployment.Application.Packages), "Get package list failed.")
- for _, pkg_name := range expectedPackages {
- var pkg = deployment.Application.Packages[pkg_name]
- assert.Equal(t, pkg_name, pkg.Packagename, "Get package package name failed.")
- assert.Equal(t, "/wskdeploy/samples/test", pkg.Namespace, "Get package namespace failed.")
- assert.Equal(t, "12345678ABCDEF", pkg.Credential, "Get package credential failed.")
- assert.Equal(t, 1, len(pkg.Inputs), "Get package input list failed.")
- //get and verify inputs
- for param_name, param := range pkg.Inputs {
- assert.Equal(t, "value", param.Value, "Get input value failed.")
- assert.Equal(t, "param", param_name, "Get input param name failed.")
- }
- }
+ expectedPackages := [2]string{testPackage, testPackageSec}
+ dep := deployment.GetProject()
+ assert.Equal(t, 2, len(dep.Packages), "Get package list failed.")
+ for _, pkg_name := range expectedPackages {
+ var pkg = dep.Packages[pkg_name]
+ assert.Equal(t, pkg_name, pkg.Packagename, "Get package package name failed.")
+ assert.Equal(t, "/wskdeploy/samples/test", pkg.Namespace, "Get package namespace failed.")
+ assert.Equal(t, "12345678ABCDEF", pkg.Credential, "Get package credential failed.")
+ assert.Equal(t, 1, len(pkg.Inputs), "Get package input list failed.")
+ //get and verify inputs
+ for param_name, param := range pkg.Inputs {
+ assert.Equal(t, "value", param.Value, "Get input value failed.")
+ assert.Equal(t, "param", param_name, "Get input param name failed.")
+ }
+ }
- // Verify the case of using concatenation.
- expectedPackages = [2]string{testPackage + "suffix", testPackageSec + "suffix"}
- deployment, _ = mm.ParseDeployment("../tests/dat/deployment_data_application_packages_env_var_con.yaml")
- assert.Equal(t, 2, len(deployment.Application.Packages), "Get package list failed.")
- for _, pkg_name := range expectedPackages {
- var pkg = deployment.Application.Packages[pkg_name]
- assert.Equal(t, pkg_name, pkg.Packagename, "Get package package name failed.")
- assert.Equal(t, "/wskdeploy/samples/test", pkg.Namespace, "Get package namespace failed.")
- assert.Equal(t, "12345678ABCDEF", pkg.Credential, "Get package credential failed.")
- assert.Equal(t, 1, len(pkg.Inputs), "Get package input list failed.")
- //get and verify inputs
- for param_name, param := range pkg.Inputs {
- assert.Equal(t, "value", param.Value, "Get input value failed.")
- assert.Equal(t, "param", param_name, "Get input param name failed.")
- }
- }
+ // Verify the case of using concatenation.
+ expectedPackages = [2]string{testPackage + "suffix", testPackageSec + "suffix"}
+ deployment, _ = mm.ParseDeployment("../tests/dat/deployment_data_project_packages_env_var_con.yaml")
+ dep = deployment.GetProject()
+ assert.Equal(t, 2, len(dep.Packages), "Get package list failed.")
+ for _, pkg_name := range expectedPackages {
+ var pkg = dep.Packages[pkg_name]
+ assert.Equal(t, pkg_name, pkg.Packagename, "Get package package name failed.")
+ assert.Equal(t, "/wskdeploy/samples/test", pkg.Namespace, "Get package namespace failed.")
+ assert.Equal(t, "12345678ABCDEF", pkg.Credential, "Get package credential failed.")
+ assert.Equal(t, 1, len(pkg.Inputs), "Get package input list failed.")
+ //get and verify inputs
+ for param_name, param := range pkg.Inputs {
+ assert.Equal(t, "value", param.Value, "Get input value failed.")
+ assert.Equal(t, "param", param_name, "Get input param name failed.")
+ }
+ }
}
diff --git a/parsers/manifest_parser.go b/parsers/manifest_parser.go
index c38eaaa..5aa98e7 100644
--- a/parsers/manifest_parser.go
+++ b/parsers/manifest_parser.go
@@ -110,7 +110,7 @@ func (dm *YAMLParser) ComposeDependenciesFromAllPackages(manifest *YAML, project
if manifest.Packages != nil {
packages = manifest.Packages
} else {
- packages = manifest.Application.Packages
+ packages = manifest.GetProject().Packages
}
}
@@ -207,7 +207,7 @@ func (dm *YAMLParser) ComposeAllPackages(manifest *YAML, filePath string) (map[s
if manifest.Packages != nil {
manifestPackages = manifest.Packages
} else {
- manifestPackages = manifest.Application.Packages
+ manifestPackages = manifest.GetProject().Packages
}
}
@@ -291,7 +291,7 @@ func (dm *YAMLParser) ComposeSequencesFromAllPackages(namespace string, mani *YA
if mani.Packages != nil {
manifestPackages = mani.Packages
} else {
- manifestPackages = mani.Application.Packages
+ manifestPackages = mani.GetProject().Packages
}
}
@@ -359,7 +359,7 @@ func (dm *YAMLParser) ComposeActionsFromAllPackages(manifest *YAML, filePath str
if manifest.Packages != nil {
manifestPackages = manifest.Packages
} else {
- manifestPackages = manifest.Application.Packages
+ manifestPackages = manifest.GetProject().Packages
}
}
for n, p := range manifestPackages {
@@ -602,7 +602,7 @@ func (dm *YAMLParser) ComposeTriggersFromAllPackages(manifest *YAML, filePath st
if manifest.Packages != nil {
manifestPackages = manifest.Packages
} else {
- manifestPackages = manifest.Application.Packages
+ manifestPackages = manifest.GetProject().Packages
}
}
for _, p := range manifestPackages {
@@ -683,7 +683,7 @@ func (dm *YAMLParser) ComposeRulesFromAllPackages(manifest *YAML) ([]*whisk.Rule
if manifest.Packages != nil {
manifestPackages = manifest.Packages
} else {
- manifestPackages = manifest.Application.Packages
+ manifestPackages = manifest.GetProject().Packages
}
}
@@ -724,7 +724,7 @@ func (dm *YAMLParser) ComposeApiRecordsFromAllPackages(manifest *YAML) ([]*whisk
if manifest.Packages != nil {
manifestPackages = manifest.Packages
} else {
- manifestPackages = manifest.Application.Packages
+ manifestPackages = manifest.GetProject().Packages
}
}
diff --git a/parsers/yamlparser.go b/parsers/yamlparser.go
index 006e1cb..172fa2c 100644
--- a/parsers/yamlparser.go
+++ b/parsers/yamlparser.go
@@ -19,7 +19,7 @@ package parsers
import (
"github.com/apache/incubator-openwhisk-client-go/whisk"
- "github.com/apache/incubator-openwhisk-wskdeploy/utils"
+ "github.com/apache/incubator-openwhisk-wskdeploy/utils"
)
// structs that denotes the sample manifest.yaml, wrapped yaml.v2
@@ -51,34 +51,33 @@ type YAMLParser struct {
type Action struct {
//mapping to wsk.Action.Version
- Version string `yaml:"version"` //used in manifest.yaml
- Location string `yaml:"location"` //deprecated, used in manifest.yaml
- Function string `yaml:"function"` //used in manifest.yaml
- Runtime string `yaml:"runtime,omitempty"` //used in manifest.yaml
+ Version string `yaml:"version"` //used in manifest.yaml
+ Location string `yaml:"location"` //deprecated, used in manifest.yaml
+ Function string `yaml:"function"` //used in manifest.yaml
+ Runtime string `yaml:"runtime,omitempty"` //used in manifest.yaml
//mapping to wsk.Action.Namespace
- Namespace string `yaml:"namespace"` //used in deployment.yaml
- Credential string `yaml:"credential"` //used in deployment.yaml
- Inputs map[string]Parameter `yaml:"inputs"` //used in both manifest.yaml and deployment.yaml
- Outputs map[string]Parameter `yaml:"outputs"` //used in manifest.yaml
+ Namespace string `yaml:"namespace"` //used in deployment.yaml
+ Credential string `yaml:"credential"` //used in deployment.yaml
+ Inputs map[string]Parameter `yaml:"inputs"` //used in both manifest.yaml and deployment.yaml
+ Outputs map[string]Parameter `yaml:"outputs"` //used in manifest.yaml
//mapping to wsk.Action.Name
Name string
Annotations map[string]interface{} `yaml:"annotations,omitempty"`
//Parameters map[string]interface{} `yaml:parameters` // used in manifest.yaml
- ExposedUrl string `yaml:"exposedUrl"` // used in manifest.yaml
- Webexport string `yaml:"web-export"` // used in manifest.yaml
- Main string `yaml:"main"` // used in manifest.yaml
- Limits *Limits `yaml:"limits"` // used in manifest.yaml
+ ExposedUrl string `yaml:"exposedUrl"` // used in manifest.yaml
+ Webexport string `yaml:"web-export"` // used in manifest.yaml
+ Main string `yaml:"main"` // used in manifest.yaml
+ Limits *Limits `yaml:"limits"` // used in manifest.yaml
}
-
type Limits struct {
- Timeout *int `yaml:"timeout,omitempty"` //in ms, [100 ms,300000ms]
- Memory *int `yaml:"memorySize,omitempty"`//in MB, [128 MB,512 MB]
- Logsize *int `yaml:"logSize,omitempty"`//in MB, [0MB,10MB]
+ Timeout *int `yaml:"timeout,omitempty"` //in ms, [100 ms,300000ms]
+ Memory *int `yaml:"memorySize,omitempty"` //in MB, [128 MB,512 MB]
+ Logsize *int `yaml:"logSize,omitempty"` //in MB, [0MB,10MB]
ConcurrentActivations *int `yaml:"concurrentActivations,omitempty"` //not changeable via APIs
- UserInvocationRate *int `yaml:"userInvocationRate,omitempty"` //not changeable via APIs
- CodeSize *int `yaml:"codeSize,omitempty"` //not changeable via APIs
- ParameterSize *int `yaml:"parameterSize,omitempty"` //not changeable via APIs
+ UserInvocationRate *int `yaml:"userInvocationRate,omitempty"` //not changeable via APIs
+ CodeSize *int `yaml:"codeSize,omitempty"` //not changeable via APIs
+ ParameterSize *int `yaml:"parameterSize,omitempty"` //not changeable via APIs
}
type Sequence struct {
@@ -106,15 +105,15 @@ type Parameter struct {
type Trigger struct {
//mapping to ????
- Feed string `yaml:"feed"` //used in manifest.yaml
+ Feed string `yaml:"feed"` //used in manifest.yaml
//mapping to wsk.Trigger.Namespace
Namespace string `yaml:"namespace"` //used in deployment.yaml
Credential string `yaml:"credential"` //used in deployment.yaml
Inputs map[string]Parameter `yaml:"inputs"` //used in deployment.yaml
//mapping to wsk.Trigger.Name
- Name string
+ Name string
Annotations map[string]interface{} `yaml:"annotations,omitempty"`
- Source string `yaml:source` // deprecated, used in manifest.yaml
+ Source string `yaml:source` // deprecated, used in manifest.yaml
//Parameters map[string]interface{} `yaml:parameters` // used in manifest.yaml
}
@@ -168,7 +167,7 @@ type Package struct {
Apis map[string]map[string]map[string]map[string]string `yaml:"apis"` //used in manifest.yaml
}
-type Application struct {
+type Project struct {
Name string `yaml:"name"` //used in deployment.yaml
Namespace string `yaml:"namespace"` //used in deployment.yaml
Credential string `yaml:"credential"`
@@ -179,45 +178,60 @@ type Application struct {
}
type YAML struct {
- Application Application `yaml:"application"` //used in deployment.yaml
- Packages map[string]Package `yaml:"packages"` //used in deployment.yaml
- Package Package `yaml:"package"`
- Filepath string //file path of the yaml file
+ Application Project `yaml:"application"` //used in deployment.yaml (being deprecated)
+ Project Project `yaml:"project"` //used in deployment.yaml
+ Packages map[string]Package `yaml:"packages"` //used in deployment.yaml
+ Package Package `yaml:"package"`
+ Filepath string //file path of the yaml file
+}
+
+// function to return Project or Application depending on what is specified in
+// manifest and deployment files
+func (yaml *YAML) GetProject() Project {
+ if yaml.Application.Name == "" {
+ return yaml.Project
+ }
+ return yaml.Application
}
func convertSinglePackageName(packageName string) string {
- if len(packageName) != 0 {
- packageNameEnv := utils.GetEnvVar(packageName)
- if str, ok := packageNameEnv.(string); ok {
- return str
- } else {
- return packageName
- }
- }
- return packageName
+ if len(packageName) != 0 {
+ packageNameEnv := utils.GetEnvVar(packageName)
+ if str, ok := packageNameEnv.(string); ok {
+ return str
+ } else {
+ return packageName
+ }
+ }
+ return packageName
}
func convertPackageName(packageMap map[string]Package) map[string]Package {
- packages := make(map[string]Package)
- for packName, depPacks := range packageMap {
- name := packName
- packageName := utils.GetEnvVar(packName)
- if str, ok := packageName.(string); ok {
- name = str
- }
- depPacks.Packagename = convertSinglePackageName(depPacks.Packagename)
- packages[name] = depPacks
- }
- return packages
+ packages := make(map[string]Package)
+ for packName, depPacks := range packageMap {
+ name := packName
+ packageName := utils.GetEnvVar(packName)
+ if str, ok := packageName.(string); ok {
+ name = str
+ }
+ depPacks.Packagename = convertSinglePackageName(depPacks.Packagename)
+ packages[name] = depPacks
+ }
+ return packages
}
func ReadEnvVariable(yaml *YAML) *YAML {
- yaml.Application.Package.Packagename = convertSinglePackageName(yaml.Application.Package.Packagename)
- yaml.Package.Packagename = convertSinglePackageName(yaml.Package.Packagename)
- yaml.Application.Packages = convertPackageName(yaml.Application.Packages)
- yaml.Packages = convertPackageName(yaml.Packages)
-
- return yaml
+ if yaml.Application.Name != "" {
+ yaml.Application.Package.Packagename = convertSinglePackageName(yaml.Application.Package.Packagename)
+ yaml.Package.Packagename = convertSinglePackageName(yaml.Package.Packagename)
+ yaml.Application.Packages = convertPackageName(yaml.Application.Packages)
+ } else {
+ yaml.Project.Package.Packagename = convertSinglePackageName(yaml.Project.Package.Packagename)
+ yaml.Package.Packagename = convertSinglePackageName(yaml.Package.Packagename)
+ yaml.Project.Packages = convertPackageName(yaml.Project.Packages)
+ }
+ yaml.Packages = convertPackageName(yaml.Packages)
+ return yaml
}
//********************Trigger functions*************************//
diff --git a/parsers/yamlparser_test.go b/parsers/yamlparser_test.go
index 3cc58c7..ad206f3 100644
--- a/parsers/yamlparser_test.go
+++ b/parsers/yamlparser_test.go
@@ -28,24 +28,24 @@ var manifestfile_val_pkg = "../tests/dat/manifest_validate_package_grammar.yaml"
var manifestfile_val_tar = "../tests/dat/manifest_validate_trigger_action_rule_grammar.yaml"
var manifest_validate_triggerfeed = "../tests/dat/manifest_validate_triggerfeed.yaml"
var manifest_validate_rule = "../tests/dat/manifest_validate_rule.yaml"
-var deploymentfile_data_app = "../tests/dat/deployment_data_application.yaml"
-var deploymentfile_data_app_pkg = "../tests/dat/deployment_data_application_package.yaml"
+var deploymentfile_data_app = "../tests/dat/deployment_data_project.yaml"
+var deploymentfile_data_app_pkg = "../tests/dat/deployment_data_project_package.yaml"
var deployment_compose_trigger = "../tests/dat/deployment_compose_trigger.yaml"
-
func TestComposeWskPackage(t *testing.T) {
mm := NewYAMLParser()
- deployment, _ := mm.ParseDeployment(deploymentfile_data_app_pkg)
+ deployment, _ := mm.ParseDeployment(deploymentfile_data_app_pkg)
manifest, _ := mm.ParseManifest(manifestfile_val_pkg)
- pkglist := deployment.Application.GetPackageList()
+ dep := deployment.GetProject()
+ pkglist := dep.GetPackageList()
for _, pkg := range pkglist {
wskpkg := pkg.ComposeWskPackage()
assert.Equal(t, "test_package", wskpkg.Name, "Get package name failed.")
assert.Equal(t, "/wskdeploy/samples/test", wskpkg.Namespace, "Get package namespace failed.")
}
- for n, p := range manifest.Packages{
+ for n, p := range manifest.Packages {
wskpkg := p.ComposeWskPackage()
assert.Equal(t, "helloworld", n, "Get package name failed.")
assert.Equal(t, "1.0", wskpkg.Version, "Get package version failed.")
@@ -54,10 +54,11 @@ func TestComposeWskPackage(t *testing.T) {
func TestComposeWskTrigger(t *testing.T) {
mm := NewYAMLParser()
- deployment, _ := mm.ParseDeployment(deployment_compose_trigger)
+ deployment, _ := mm.ParseDeployment(deployment_compose_trigger)
manifest, _ := mm.ParseManifest(manifest_validate_triggerfeed)
- pkg := deployment.Application.GetPackageList()[0]
+ dep := deployment.GetProject()
+ pkg := dep.GetPackageList()[0]
for _, trigger := range pkg.GetTriggerList() {
//temporarily add the nil to make test pass, as we plan refactor the parser as well as test codes.
wsktrigger := trigger.ComposeWskTrigger(nil)
@@ -100,7 +101,7 @@ func TestGetActionList(t *testing.T) {
manifest, _ := mm.ParseManifest(manifestfile_val_tar)
pkg := manifest.Packages["manifest2"]
actions := pkg.GetActionList()
- assert.Equal(t,3, len(actions), "Get action list failed.")
+ assert.Equal(t, 3, len(actions), "Get action list failed.")
}
func TestGetTriggerList(t *testing.T) {
@@ -108,7 +109,7 @@ func TestGetTriggerList(t *testing.T) {
manifest, _ := mm.ParseManifest(manifestfile_val_tar)
pkg := manifest.Packages["manifest2"]
triggers := pkg.GetTriggerList()
- assert.Equal(t,2, len(triggers), "Get trigger list failed.")
+ assert.Equal(t, 2, len(triggers), "Get trigger list failed.")
}
func TestGetRuleList(t *testing.T) {
@@ -116,7 +117,7 @@ func TestGetRuleList(t *testing.T) {
manifest, _ := mm.ParseManifest(manifestfile_val_tar)
pkg := manifest.Packages["manifest2"]
rules := pkg.GetRuleList()
- assert.Equal(t,3, len(rules), "Get trigger list failed.")
+ assert.Equal(t, 3, len(rules), "Get trigger list failed.")
}
func TestGetFeedList(t *testing.T) {
@@ -124,7 +125,7 @@ func TestGetFeedList(t *testing.T) {
manifest, _ := mm.ParseManifest(manifestfile_val_tar)
pkg := manifest.Packages["manifest2"]
feeds := pkg.GetFeedList()
- assert.Equal(t,4, len(feeds), "Get feed list failed.")
+ assert.Equal(t, 4, len(feeds), "Get feed list failed.")
}
func TestGetApisList(t *testing.T) {
@@ -132,5 +133,5 @@ func TestGetApisList(t *testing.T) {
manifest, _ := mm.ParseManifest(manifestfile_val_tar)
pkg := manifest.Packages["manifest2"]
apis := pkg.GetApis()
- assert.Equal(t,5, len(apis), "Get api list failed.")
+ assert.Equal(t, 5, len(apis), "Get api list failed.")
}
diff --git a/tests/dat/deployment_compose_trigger.yaml b/tests/dat/deployment_compose_trigger.yaml
index 300ef54..d3aea20 100644
--- a/tests/dat/deployment_compose_trigger.yaml
+++ b/tests/dat/deployment_compose_trigger.yaml
@@ -1,4 +1,4 @@
-application:
+project:
name: wskdeploy-samples
namespace: /wskdeploy/samples/
diff --git a/tests/dat/deployment_data_application.yaml b/tests/dat/deployment_data_project.yaml
similarity index 89%
rename from tests/dat/deployment_data_application.yaml
rename to tests/dat/deployment_data_project.yaml
index bee413e..9a80e49 100644
--- a/tests/dat/deployment_data_application.yaml
+++ b/tests/dat/deployment_data_project.yaml
@@ -1,4 +1,4 @@
-application:
+project:
name: wskdeploy-samples
namespace: /wskdeploy/samples/
credential: user-credential
diff --git a/tests/dat/deployment_data_application_package.yaml b/tests/dat/deployment_data_project_package.yaml
similarity index 94%
rename from tests/dat/deployment_data_application_package.yaml
rename to tests/dat/deployment_data_project_package.yaml
index e2904e4..2bd705e 100644
--- a/tests/dat/deployment_data_application_package.yaml
+++ b/tests/dat/deployment_data_project_package.yaml
@@ -1,4 +1,4 @@
-application:
+project:
name: wskdeploy-samples
namespace: /wskdeploy/samples/
diff --git a/tests/dat/deployment_data_application_package_env_var.yaml b/tests/dat/deployment_data_project_package_env_var.yaml
similarity index 94%
rename from tests/dat/deployment_data_application_package_env_var.yaml
rename to tests/dat/deployment_data_project_package_env_var.yaml
index eb987a5..97d9b56 100644
--- a/tests/dat/deployment_data_application_package_env_var.yaml
+++ b/tests/dat/deployment_data_project_package_env_var.yaml
@@ -1,4 +1,4 @@
-application:
+project:
name: wskdeploy-samples
namespace: /wskdeploy/samples/
diff --git a/tests/dat/deployment_data_application_package_env_var_con.yaml b/tests/dat/deployment_data_project_package_env_var_con.yaml
similarity index 94%
rename from tests/dat/deployment_data_application_package_env_var_con.yaml
rename to tests/dat/deployment_data_project_package_env_var_con.yaml
index 8372140..30b698a 100644
--- a/tests/dat/deployment_data_application_package_env_var_con.yaml
+++ b/tests/dat/deployment_data_project_package_env_var_con.yaml
@@ -1,4 +1,4 @@
-application:
+project:
name: wskdeploy-samples
namespace: /wskdeploy/samples/
diff --git a/tests/dat/deployment_data_application_packages_env_var.yaml b/tests/dat/deployment_data_project_packages_env_var.yaml
similarity index 96%
rename from tests/dat/deployment_data_application_packages_env_var.yaml
rename to tests/dat/deployment_data_project_packages_env_var.yaml
index 55546fc..a92ab2f 100644
--- a/tests/dat/deployment_data_application_packages_env_var.yaml
+++ b/tests/dat/deployment_data_project_packages_env_var.yaml
@@ -1,4 +1,4 @@
-application:
+project:
name: wskdeploy-samples
namespace: /wskdeploy/samples/
diff --git a/tests/dat/deployment_data_application_packages_env_var_con.yaml b/tests/dat/deployment_data_project_packages_env_var_con.yaml
similarity index 97%
rename from tests/dat/deployment_data_application_packages_env_var_con.yaml
rename to tests/dat/deployment_data_project_packages_env_var_con.yaml
index 9366928..92cce6e 100644
--- a/tests/dat/deployment_data_application_packages_env_var_con.yaml
+++ b/tests/dat/deployment_data_project_packages_env_var_con.yaml
@@ -1,4 +1,4 @@
-application:
+project:
name: wskdeploy-samples
namespace: /wskdeploy/samples/
diff --git a/tests/dat/deployment_validate_credentials.yaml b/tests/dat/deployment_validate_credentials.yaml
index 6026572..e44868d 100644
--- a/tests/dat/deployment_validate_credentials.yaml
+++ b/tests/dat/deployment_validate_credentials.yaml
@@ -1,6 +1,6 @@
# do not change or delete this file without changing deployers/whiskclient_test.go
# this is used for testing whiskclient functionality
-application:
+project:
name: UnitTestCredentials
apiHost: sample.deployment.openwhisk.org
credential: sample-deployment-credential
diff --git a/tests/dat/deployment_validate_deployment_reader.yaml b/tests/dat/deployment_validate_deployment_reader.yaml
index fd18d2b..2e20ea0 100644
--- a/tests/dat/deployment_validate_deployment_reader.yaml
+++ b/tests/dat/deployment_validate_deployment_reader.yaml
@@ -1,4 +1,4 @@
-application:
+project:
name: UnitTestDeployers
packages:
ValidateDeploymentReader:
diff --git a/tests/src/integration/alarmtrigger/deployment.yaml b/tests/src/integration/alarmtrigger/deployment.yaml
index 77b8ffc..4d983e3 100644
--- a/tests/src/integration/alarmtrigger/deployment.yaml
+++ b/tests/src/integration/alarmtrigger/deployment.yaml
@@ -1,4 +1,4 @@
-application:
+project:
name: HelloWorldEvery12Hours
packages:
helloworld:
diff --git a/tests/src/integration/common/wskdeploy.go b/tests/src/integration/common/wskdeploy.go
index 190353a..5245d3e 100644
--- a/tests/src/integration/common/wskdeploy.go
+++ b/tests/src/integration/common/wskdeploy.go
@@ -172,7 +172,7 @@ func (wskdeploy *Wskdeploy) UndeployManifestPathOnly(manifestpath string) (strin
// This method will mock a construction of deployment plan, creating all the memory objects
// This method CANNOT be used for real deployment!
// Param manifestPath & deploymentPath MUST be the absolute path.
-func (wskdeploy *Wskdeploy) GetDeploymentObjects(manifestPath string, deploymentPath string) (*deployers.DeploymentApplication, error) {
+func (wskdeploy *Wskdeploy) GetDeploymentObjects(manifestPath string, deploymentPath string) (*deployers.DeploymentProject, error) {
//create ServiceDeployer and set default values
deployer := deployers.NewServiceDeployer()
deployer.ProjectPath = filepath.Dir(manifestPath)
diff --git a/tests/src/integration/helloworld/deployment.yaml b/tests/src/integration/helloworld/deployment.yaml
index 9d102c6..a228171 100644
--- a/tests/src/integration/helloworld/deployment.yaml
+++ b/tests/src/integration/helloworld/deployment.yaml
@@ -1,4 +1,4 @@
-application:
+project:
name: IntegrationTest
packages:
IntegrationTestHelloWorld:
diff --git a/tests/src/integration/message-hub/deployment.yaml b/tests/src/integration/message-hub/deployment.yaml
index 5f6413a..e300229 100644
--- a/tests/src/integration/message-hub/deployment.yaml
+++ b/tests/src/integration/message-hub/deployment.yaml
@@ -1,4 +1,4 @@
-application:
+project:
name: DataProcessingApp
packages:
data-processing-with-messagehub:
diff --git a/tests/src/integration/validate-application-and-project/actions/hello.js b/tests/src/integration/validate-application-and-project/actions/hello.js
new file mode 100644
index 0000000..25fdafb
--- /dev/null
+++ b/tests/src/integration/validate-application-and-project/actions/hello.js
@@ -0,0 +1,26 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/*
+ * Return a simple greeting message for the whole world.
+ */
+function main(params) {
+ msg = "Hello, " + params.name + " from " + params.place;
+ console.log(msg)
+ return { payload: msg };
+}
+
diff --git a/tests/dat/deployment_validate_deployment_reader.yaml b/tests/src/integration/validate-application-and-project/deployment-with-application.yaml
similarity index 57%
copy from tests/dat/deployment_validate_deployment_reader.yaml
copy to tests/src/integration/validate-application-and-project/deployment-with-application.yaml
index fd18d2b..1f600f9 100644
--- a/tests/dat/deployment_validate_deployment_reader.yaml
+++ b/tests/src/integration/validate-application-and-project/deployment-with-application.yaml
@@ -1,9 +1,9 @@
application:
- name: UnitTestDeployers
+ name: IntegrationTest
packages:
- ValidateDeploymentReader:
+ packageValidatingApplication:
actions:
- helloNodejs:
+ hello:
inputs:
name: Amy
place: Paris
diff --git a/tests/dat/deployment_validate_deployment_reader.yaml b/tests/src/integration/validate-application-and-project/deployment-with-project.yaml
similarity index 50%
copy from tests/dat/deployment_validate_deployment_reader.yaml
copy to tests/src/integration/validate-application-and-project/deployment-with-project.yaml
index fd18d2b..4c3c54f 100644
--- a/tests/dat/deployment_validate_deployment_reader.yaml
+++ b/tests/src/integration/validate-application-and-project/deployment-with-project.yaml
@@ -1,9 +1,9 @@
-application:
- name: UnitTestDeployers
+project:
+ name: IntegrationTest
packages:
- ValidateDeploymentReader:
+ packageValidatingProject:
actions:
- helloNodejs:
+ hello:
inputs:
name: Amy
place: Paris
diff --git a/tests/src/integration/validate-application-and-project/manifest-with-application.yaml b/tests/src/integration/validate-application-and-project/manifest-with-application.yaml
new file mode 100644
index 0000000..1abc629
--- /dev/null
+++ b/tests/src/integration/validate-application-and-project/manifest-with-application.yaml
@@ -0,0 +1,18 @@
+packages:
+ packageValidatingApplication:
+ actions:
+ hello:
+ function: actions/hello.js
+ runtime: nodejs:6
+ inputs:
+ name:
+ type: string
+ description: name of a person
+ place:
+ type: string
+ description: location of a person
+ outputs:
+ payload:
+ type: string
+ description: a simple greeting message, Hello World!
+
diff --git a/tests/src/integration/validate-application-and-project/manifest-with-project.yaml b/tests/src/integration/validate-application-and-project/manifest-with-project.yaml
new file mode 100644
index 0000000..3e4c5b7
--- /dev/null
+++ b/tests/src/integration/validate-application-and-project/manifest-with-project.yaml
@@ -0,0 +1,18 @@
+packages:
+ packageValidatingProject:
+ actions:
+ hello:
+ function: actions/hello.js
+ runtime: nodejs:6
+ inputs:
+ name:
+ type: string
+ description: name of a person
+ place:
+ type: string
+ description: location of a person
+ outputs:
+ payload:
+ type: string
+ description: a simple greeting message, Hello World!
+
diff --git a/tests/src/integration/validate-application-and-project/validate-application-and-project_test.go b/tests/src/integration/validate-application-and-project/validate-application-and-project_test.go
new file mode 100644
index 0000000..a110ef2
--- /dev/null
+++ b/tests/src/integration/validate-application-and-project/validate-application-and-project_test.go
@@ -0,0 +1,50 @@
+// +build integration
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package tests
+
+import (
+ "github.com/apache/incubator-openwhisk-wskdeploy/tests/src/integration/common"
+ "github.com/stretchr/testify/assert"
+ "os"
+ "testing"
+)
+
+var path = "/src/github.com/apache/incubator-openwhisk-wskdeploy/tests/src/integration/validate-application-and-project/"
+
+func TestApplicationInDeployment(t *testing.T) {
+ manifestPath := os.Getenv("GOPATH") + path + "manifest-with-application.yaml"
+ deploymentPath := os.Getenv("GOPATH") + path + "deployment-with-application.yaml"
+ wskdeploy := common.NewWskdeploy()
+ _, err := wskdeploy.Deploy(manifestPath, deploymentPath)
+ assert.Equal(t, nil, err, "Failed to deploy based on the manifest and deployment files.")
+ _, err = wskdeploy.Undeploy(manifestPath, deploymentPath)
+ assert.Equal(t, nil, err, "Failed to undeploy based on the manifest and deployment files.")
+}
+
+func TestProjectInDeployment(t *testing.T) {
+ manifestPath := os.Getenv("GOPATH") + path + "manifest-with-project.yaml"
+ deploymentPath := os.Getenv("GOPATH") + path + "deployment-with-project.yaml"
+ wskdeploy := common.NewWskdeploy()
+ _, err := wskdeploy.Deploy(manifestPath, deploymentPath)
+ assert.Equal(t, nil, err, "Failed to deploy based on the manifest and deployment files.")
+ _, err = wskdeploy.Undeploy(manifestPath, deploymentPath)
+ assert.Equal(t, nil, err, "Failed to undeploy based on the manifest and deployment files.")
+}
+
diff --git a/tests/src/integration/validate-binding-inputs-annotations/deployment.yaml b/tests/src/integration/validate-binding-inputs-annotations/deployment.yaml
index 81d1988..ec0526d 100644
--- a/tests/src/integration/validate-binding-inputs-annotations/deployment.yaml
+++ b/tests/src/integration/validate-binding-inputs-annotations/deployment.yaml
@@ -1,4 +1,4 @@
-application:
+project:
name: BindingTest
packages:
packagebinding:
diff --git a/tests/src/integration/validate-manifest-deployment-file-extensions/deployment.yaml b/tests/src/integration/validate-manifest-deployment-file-extensions/deployment.yaml
index 65252dc..1c2770a 100644
--- a/tests/src/integration/validate-manifest-deployment-file-extensions/deployment.yaml
+++ b/tests/src/integration/validate-manifest-deployment-file-extensions/deployment.yaml
@@ -1,4 +1,4 @@
-application:
+project:
name: IntegrationTest
packages:
ValidateYAMLExtension:
diff --git a/tests/src/integration/validate-manifest-deployment-file-extensions/not-standard-deployment.yaml b/tests/src/integration/validate-manifest-deployment-file-extensions/not-standard-deployment.yaml
index df79358..2df5d88 100644
--- a/tests/src/integration/validate-manifest-deployment-file-extensions/not-standard-deployment.yaml
+++ b/tests/src/integration/validate-manifest-deployment-file-extensions/not-standard-deployment.yaml
@@ -1,4 +1,4 @@
-application:
+project:
name: IntegrationTest
packages:
ValidateNotStandardFileNames:
diff --git a/tests/src/integration/validate-manifest-deployment-file-extensions/random-name-2.yaml b/tests/src/integration/validate-manifest-deployment-file-extensions/random-name-2.yaml
index 1dc4f2d..f6f9307 100644
--- a/tests/src/integration/validate-manifest-deployment-file-extensions/random-name-2.yaml
+++ b/tests/src/integration/validate-manifest-deployment-file-extensions/random-name-2.yaml
@@ -1,4 +1,4 @@
-application:
+project:
name: IntegrationTest
packages:
ValidateRandomFileNames:
diff --git a/tests/src/integration/validate-manifest-deployment-file-extensions/yaml-deployment-with-yml-manifest.yaml b/tests/src/integration/validate-manifest-deployment-file-extensions/yaml-deployment-with-yml-manifest.yaml
index 82d6086..6176747 100644
--- a/tests/src/integration/validate-manifest-deployment-file-extensions/yaml-deployment-with-yml-manifest.yaml
+++ b/tests/src/integration/validate-manifest-deployment-file-extensions/yaml-deployment-with-yml-manifest.yaml
@@ -1,4 +1,4 @@
-application:
+project:
name: IntegrationTest
packages:
ValidateYMLManifestWithYAMLDeployment:
diff --git a/tests/src/integration/validate-package-in-manifest/deployment.yaml b/tests/src/integration/validate-package-in-manifest/deployment.yaml
index 7200329..024ee7b 100644
--- a/tests/src/integration/validate-package-in-manifest/deployment.yaml
+++ b/tests/src/integration/validate-package-in-manifest/deployment.yaml
@@ -1,4 +1,4 @@
-application:
+project:
name: IntegrationTest
packages:
usingPackageInManifest:
diff --git a/tests/src/integration/validate-packages-in-manifest/deployment.yaml b/tests/src/integration/validate-packages-in-manifest/deployment.yaml
index 5ee0f75..ef0cb5e 100644
--- a/tests/src/integration/validate-packages-in-manifest/deployment.yaml
+++ b/tests/src/integration/validate-packages-in-manifest/deployment.yaml
@@ -1,4 +1,4 @@
-application:
+project:
name: IntegrationTest
packages:
packageNodeJS:
diff --git a/tests/src/integration/validatePackageInDeployment/deployment.yaml b/tests/src/integration/validatePackageInDeployment/deployment.yaml
index 7242d68..c4174d4 100644
--- a/tests/src/integration/validatePackageInDeployment/deployment.yaml
+++ b/tests/src/integration/validatePackageInDeployment/deployment.yaml
@@ -1,4 +1,4 @@
-application:
+project:
name: IntegrationTestPackageInDeployment
package:
name: TestPackageInDeploymentFile
diff --git a/tests/src/integration/validatePackagesInDeployment/deployment.yaml b/tests/src/integration/validatePackagesInDeployment/deployment.yaml
index 541e0cb..4f3aec9 100644
--- a/tests/src/integration/validatePackagesInDeployment/deployment.yaml
+++ b/tests/src/integration/validatePackagesInDeployment/deployment.yaml
@@ -1,4 +1,4 @@
-application:
+project:
name: IntegrationTestPackagesInDeployment
packages:
TestPackagesInDeploymentFile:
diff --git a/tests/usecases/github/deployment.yaml b/tests/usecases/github/deployment.yaml
index a4f88e5..76b80cc 100644
--- a/tests/usecases/github/deployment.yaml
+++ b/tests/usecases/github/deployment.yaml
@@ -1,4 +1,4 @@
-application:
+project:
name: AppToPrintGitHubCommits
packages:
GitHubCommits:
diff --git a/tests/usecases/slack/deployment.yaml b/tests/usecases/slack/deployment.yaml
index d8fb8cd..c9a4832 100644
--- a/tests/usecases/slack/deployment.yaml
+++ b/tests/usecases/slack/deployment.yaml
@@ -1,4 +1,4 @@
-application:
+project:
name: AppToPostToSlack
packages:
SlackPackage:
diff --git a/utils/misc.go b/utils/misc.go
index 5775872..b37b059 100644
--- a/utils/misc.go
+++ b/utils/misc.go
@@ -78,7 +78,7 @@ func GetHomeDirectory() string {
return usr.HomeDir
}
-// Potentially complex structures(such as DeploymentApplication, DeploymentPackage)
+// Potentially complex structures(such as DeploymentProject, DeploymentPackage)
// could implement those interface which is convenient for put, get subtract in
// containers etc.
type Comparable interface {
diff --git a/wski18n/i18n_resources.go b/wski18n/i18n_resources.go
index d3c127f..76bb34e 100644
--- a/wski18n/i18n_resources.go
+++ b/wski18n/i18n_resources.go
@@ -32,330 +32,330 @@
package wski18n
import (
- "bytes"
- "compress/gzip"
- "fmt"
- "io"
- "io/ioutil"
- "os"
- "path/filepath"
- "strings"
- "time"
+ "bytes"
+ "compress/gzip"
+ "fmt"
+ "io"
+ "io/ioutil"
+ "os"
+ "path/filepath"
+ "strings"
+ "time"
)
func bindataRead(data []byte, name string) ([]byte, error) {
- gz, err := gzip.NewReader(bytes.NewBuffer(data))
- if err != nil {
- return nil, fmt.Errorf("Read %q: %v", name, err)
- }
+ gz, err := gzip.NewReader(bytes.NewBuffer(data))
+ if err != nil {
+ return nil, fmt.Errorf("Read %q: %v", name, err)
+ }
- var buf bytes.Buffer
- _, err = io.Copy(&buf, gz)
- clErr := gz.Close()
+ var buf bytes.Buffer
+ _, err = io.Copy(&buf, gz)
+ clErr := gz.Close()
- if err != nil {
- return nil, fmt.Errorf("Read %q: %v", name, err)
- }
- if clErr != nil {
- return nil, err
- }
+ if err != nil {
+ return nil, fmt.Errorf("Read %q: %v", name, err)
+ }
+ if clErr != nil {
+ return nil, err
+ }
- return buf.Bytes(), nil
+ return buf.Bytes(), nil
}
type asset struct {
- bytes []byte
- info os.FileInfo
+ bytes []byte
+ info os.FileInfo
}
type bindataFileInfo struct {
- name string
- size int64
- mode os.FileMode
- modTime time.Time
+ name string
+ size int64
+ mode os.FileMode
+ modTime time.Time
}
func (fi bindataFileInfo) Name() string {
- return fi.name
+ return fi.name
}
func (fi bindataFileInfo) Size() int64 {
- return fi.size
+ return fi.size
}
func (fi bindataFileInfo) Mode() os.FileMode {
- return fi.mode
+ return fi.mode
}
func (fi bindataFileInfo) ModTime() time.Time {
- return fi.modTime
+ return fi.modTime
}
func (fi bindataFileInfo) IsDir() bool {
- return false
+ return false
}
func (fi bindataFileInfo) Sys() interface{} {
- return nil
+ return nil
}
var _wski18nResourcesDe_deAllJson = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x01\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00")
func wski18nResourcesDe_deAllJsonBytes() ([]byte, error) {
- return bindataRead(
- _wski18nResourcesDe_deAllJson,
- "wski18n/resources/de_DE.all.json",
- )
+ return bindataRead(
+ _wski18nResourcesDe_deAllJson,
+ "wski18n/resources/de_DE.all.json",
+ )
}
func wski18nResourcesDe_deAllJson() (*asset, error) {
- bytes, err := wski18nResourcesDe_deAllJsonBytes()
- if err != nil {
- return nil, err
- }
+ bytes, err := wski18nResourcesDe_deAllJsonBytes()
+ if err != nil {
+ return nil, err
+ }
- info := bindataFileInfo{name: "wski18n/resources/de_DE.all.json", size: 0, mode: os.FileMode(420), modTime: time.Unix(1500653295, 0)}
- a := &asset{bytes: bytes, info: info}
- return a, nil
+ info := bindataFileInfo{name: "wski18n/resources/de_DE.all.json", size: 0, mode: os.FileMode(420), modTime: time.Unix(1501631495, 0)}
+ a := &asset{bytes: bytes, info: info}
+ return a, nil
}
-var _wski18nResourcesEn_usAllJson = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x5b\x5d\x6f\xdb\x3a\x12\x7d\xcf\xaf\x18\xe4\xc5\x2f\x81\xb6\xbd\x8b\x05\x16\x7d\x0b\x6e\xbf\x82\xb6\x69\x90\x64\x5b\x14\xdd\x02\x61\xc4\xb1\xc5\x9a\x22\x05\x92\x72\xe0\x1a\xfe\xef\x0b\x8a\x92\xed\x24\x14\x45\xc9\xb2\xb7\xbb\xb8\x7d\x72\x6c\xce\x39\x67\x86\xe4\x70\x46\x62\xbf\x9f\x00\xac\x4e\x00\x00\x4e\x19\x3d\x7d\x05\xa7\xef\x91\x73\x79\x7a\xe6\xbe\x32\x8a\x08\xcd\x89\x61\x52\xd8\xdf\xce\x05\x9c\x5f [...]
+var _wski18nResourcesEn_usAllJson = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x5b\x5d\x6f\xdb\x3a\x12\x7d\xcf\xaf\x18\xe4\xc5\x2f\x81\xb6\xbd\x8b\x05\x16\x7d\x0b\x6e\xbf\x82\xb6\x69\x90\x64\x5b\x14\xdd\x02\x61\xc4\xb1\xc5\x9a\x22\x05\x92\x72\xe0\x1a\xfe\xef\x0b\x8a\x92\xed\x24\x14\x45\xc9\xb2\xb7\xbb\xb8\x79\x72\x64\xce\x39\x67\x86\x5f\x33\x14\xfd\xfd\x04\x60\x75\x02\x00\x70\xca\xe8\xe9\x2b\x38\x7d\x8f\x9c\xcb\xd3\x33\xf7\xc8\x28\x22\x34\x27\x86\x49\x61\xbf\x3b\x17\x70\x7e\x75 [...]
func wski18nResourcesEn_usAllJsonBytes() ([]byte, error) {
- return bindataRead(
- _wski18nResourcesEn_usAllJson,
- "wski18n/resources/en_US.all.json",
- )
+ return bindataRead(
+ _wski18nResourcesEn_usAllJson,
+ "wski18n/resources/en_US.all.json",
+ )
}
func wski18nResourcesEn_usAllJson() (*asset, error) {
- bytes, err := wski18nResourcesEn_usAllJsonBytes()
- if err != nil {
- return nil, err
- }
+ bytes, err := wski18nResourcesEn_usAllJsonBytes()
+ if err != nil {
+ return nil, err
+ }
- info := bindataFileInfo{name: "wski18n/resources/en_US.all.json", size: 13627, mode: os.FileMode(420), modTime: time.Unix(1507040831, 0)}
- a := &asset{bytes: bytes, info: info}
- return a, nil
+ info := bindataFileInfo{name: "wski18n/resources/en_US.all.json", size: 14089, mode: os.FileMode(420), modTime: time.Unix(1508886382, 0)}
+ a := &asset{bytes: bytes, info: info}
+ return a, nil
}
var _wski18nResourcesEs_esAllJson = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x01\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00")
func wski18nResourcesEs_esAllJsonBytes() ([]byte, error) {
- return bindataRead(
- _wski18nResourcesEs_esAllJson,
- "wski18n/resources/es_ES.all.json",
- )
+ return bindataRead(
+ _wski18nResourcesEs_esAllJson,
+ "wski18n/resources/es_ES.all.json",
+ )
}
func wski18nResourcesEs_esAllJson() (*asset, error) {
- bytes, err := wski18nResourcesEs_esAllJsonBytes()
- if err != nil {
- return nil, err
- }
+ bytes, err := wski18nResourcesEs_esAllJsonBytes()
+ if err != nil {
+ return nil, err
+ }
- info := bindataFileInfo{name: "wski18n/resources/es_ES.all.json", size: 0, mode: os.FileMode(420), modTime: time.Unix(1500653295, 0)}
- a := &asset{bytes: bytes, info: info}
- return a, nil
+ info := bindataFileInfo{name: "wski18n/resources/es_ES.all.json", size: 0, mode: os.FileMode(420), modTime: time.Unix(1501631495, 0)}
+ a := &asset{bytes: bytes, info: info}
+ return a, nil
}
var _wski18nResourcesFr_frAllJson = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8a\xe6\x52\x50\xa8\xe6\x52\x50\x50\x50\x50\xca\x4c\x51\xb2\x52\x50\x4a\xaa\x2c\x48\x2c\x2e\x56\x48\x4e\x2d\x2a\xc9\x4c\xcb\x4c\x4e\x2c\x49\x55\x48\xce\x48\x4d\xce\xce\xcc\x4b\x57\xd2\x81\x28\x2c\x29\x4a\xcc\x2b\xce\x49\x2c\xc9\xcc\xcf\x03\xe9\x08\xce\xcf\x4d\x55\x40\x12\x53\xc8\xcc\x53\x70\x2b\x4a\xcd\x4b\xce\x50\xe2\x52\x50\xa8\xe5\x8a\xe5\x02\x04\x00\x00\xff\xff\x45\xa4\xe9\x62\x65\x00\x00\x00")
func wski18nResourcesFr_frAllJsonBytes() ([]byte, error) {
- return bindataRead(
- _wski18nResourcesFr_frAllJson,
- "wski18n/resources/fr_FR.all.json",
- )
+ return bindataRead(
+ _wski18nResourcesFr_frAllJson,
+ "wski18n/resources/fr_FR.all.json",
+ )
}
func wski18nResourcesFr_frAllJson() (*asset, error) {
- bytes, err := wski18nResourcesFr_frAllJsonBytes()
- if err != nil {
- return nil, err
- }
+ bytes, err := wski18nResourcesFr_frAllJsonBytes()
+ if err != nil {
+ return nil, err
+ }
- info := bindataFileInfo{name: "wski18n/resources/fr_FR.all.json", size: 101, mode: os.FileMode(420), modTime: time.Unix(1500653295, 0)}
- a := &asset{bytes: bytes, info: info}
- return a, nil
+ info := bindataFileInfo{name: "wski18n/resources/fr_FR.all.json", size: 101, mode: os.FileMode(420), modTime: time.Unix(1501631495, 0)}
+ a := &asset{bytes: bytes, info: info}
+ return a, nil
}
var _wski18nResourcesIt_itAllJson = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x01\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00")
func wski18nResourcesIt_itAllJsonBytes() ([]byte, error) {
- return bindataRead(
- _wski18nResourcesIt_itAllJson,
- "wski18n/resources/it_IT.all.json",
- )
+ return bindataRead(
+ _wski18nResourcesIt_itAllJson,
+ "wski18n/resources/it_IT.all.json",
+ )
}
func wski18nResourcesIt_itAllJson() (*asset, error) {
- bytes, err := wski18nResourcesIt_itAllJsonBytes()
- if err != nil {
- return nil, err
- }
+ bytes, err := wski18nResourcesIt_itAllJsonBytes()
+ if err != nil {
+ return nil, err
+ }
- info := bindataFileInfo{name: "wski18n/resources/it_IT.all.json", size: 0, mode: os.FileMode(420), modTime: time.Unix(1500653295, 0)}
- a := &asset{bytes: bytes, info: info}
- return a, nil
+ info := bindataFileInfo{name: "wski18n/resources/it_IT.all.json", size: 0, mode: os.FileMode(420), modTime: time.Unix(1501631495, 0)}
+ a := &asset{bytes: bytes, info: info}
+ return a, nil
}
var _wski18nResourcesJa_jaAllJson = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x01\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00")
func wski18nResourcesJa_jaAllJsonBytes() ([]byte, error) {
- return bindataRead(
- _wski18nResourcesJa_jaAllJson,
- "wski18n/resources/ja_JA.all.json",
- )
+ return bindataRead(
+ _wski18nResourcesJa_jaAllJson,
+ "wski18n/resources/ja_JA.all.json",
+ )
}
func wski18nResourcesJa_jaAllJson() (*asset, error) {
- bytes, err := wski18nResourcesJa_jaAllJsonBytes()
- if err != nil {
- return nil, err
- }
+ bytes, err := wski18nResourcesJa_jaAllJsonBytes()
+ if err != nil {
+ return nil, err
+ }
- info := bindataFileInfo{name: "wski18n/resources/ja_JA.all.json", size: 0, mode: os.FileMode(420), modTime: time.Unix(1500653295, 0)}
- a := &asset{bytes: bytes, info: info}
- return a, nil
+ info := bindataFileInfo{name: "wski18n/resources/ja_JA.all.json", size: 0, mode: os.FileMode(420), modTime: time.Unix(1501631495, 0)}
+ a := &asset{bytes: bytes, info: info}
+ return a, nil
}
var _wski18nResourcesKo_krAllJson = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x01\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00")
func wski18nResourcesKo_krAllJsonBytes() ([]byte, error) {
- return bindataRead(
- _wski18nResourcesKo_krAllJson,
- "wski18n/resources/ko_KR.all.json",
- )
+ return bindataRead(
+ _wski18nResourcesKo_krAllJson,
+ "wski18n/resources/ko_KR.all.json",
+ )
}
func wski18nResourcesKo_krAllJson() (*asset, error) {
- bytes, err := wski18nResourcesKo_krAllJsonBytes()
- if err != nil {
- return nil, err
- }
+ bytes, err := wski18nResourcesKo_krAllJsonBytes()
+ if err != nil {
+ return nil, err
+ }
- info := bindataFileInfo{name: "wski18n/resources/ko_KR.all.json", size: 0, mode: os.FileMode(420), modTime: time.Unix(1500653295, 0)}
- a := &asset{bytes: bytes, info: info}
- return a, nil
+ info := bindataFileInfo{name: "wski18n/resources/ko_KR.all.json", size: 0, mode: os.FileMode(420), modTime: time.Unix(1501631495, 0)}
+ a := &asset{bytes: bytes, info: info}
+ return a, nil
}
var _wski18nResourcesPt_brAllJson = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x01\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00")
func wski18nResourcesPt_brAllJsonBytes() ([]byte, error) {
- return bindataRead(
- _wski18nResourcesPt_brAllJson,
- "wski18n/resources/pt_BR.all.json",
- )
+ return bindataRead(
+ _wski18nResourcesPt_brAllJson,
+ "wski18n/resources/pt_BR.all.json",
+ )
}
func wski18nResourcesPt_brAllJson() (*asset, error) {
- bytes, err := wski18nResourcesPt_brAllJsonBytes()
- if err != nil {
- return nil, err
- }
+ bytes, err := wski18nResourcesPt_brAllJsonBytes()
+ if err != nil {
+ return nil, err
+ }
- info := bindataFileInfo{name: "wski18n/resources/pt_BR.all.json", size: 0, mode: os.FileMode(420), modTime: time.Unix(1500653295, 0)}
- a := &asset{bytes: bytes, info: info}
- return a, nil
+ info := bindataFileInfo{name: "wski18n/resources/pt_BR.all.json", size: 0, mode: os.FileMode(420), modTime: time.Unix(1501631495, 0)}
+ a := &asset{bytes: bytes, info: info}
+ return a, nil
}
var _wski18nResourcesZh_hansAllJson = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x01\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00")
func wski18nResourcesZh_hansAllJsonBytes() ([]byte, error) {
- return bindataRead(
- _wski18nResourcesZh_hansAllJson,
- "wski18n/resources/zh_Hans.all.json",
- )
+ return bindataRead(
+ _wski18nResourcesZh_hansAllJson,
+ "wski18n/resources/zh_Hans.all.json",
+ )
}
func wski18nResourcesZh_hansAllJson() (*asset, error) {
- bytes, err := wski18nResourcesZh_hansAllJsonBytes()
- if err != nil {
- return nil, err
- }
+ bytes, err := wski18nResourcesZh_hansAllJsonBytes()
+ if err != nil {
+ return nil, err
+ }
- info := bindataFileInfo{name: "wski18n/resources/zh_Hans.all.json", size: 0, mode: os.FileMode(420), modTime: time.Unix(1500653295, 0)}
- a := &asset{bytes: bytes, info: info}
- return a, nil
+ info := bindataFileInfo{name: "wski18n/resources/zh_Hans.all.json", size: 0, mode: os.FileMode(420), modTime: time.Unix(1501631495, 0)}
+ a := &asset{bytes: bytes, info: info}
+ return a, nil
}
var _wski18nResourcesZh_hantAllJson = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x01\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00")
func wski18nResourcesZh_hantAllJsonBytes() ([]byte, error) {
- return bindataRead(
- _wski18nResourcesZh_hantAllJson,
- "wski18n/resources/zh_Hant.all.json",
- )
+ return bindataRead(
+ _wski18nResourcesZh_hantAllJson,
+ "wski18n/resources/zh_Hant.all.json",
+ )
}
func wski18nResourcesZh_hantAllJson() (*asset, error) {
- bytes, err := wski18nResourcesZh_hantAllJsonBytes()
- if err != nil {
- return nil, err
- }
+ bytes, err := wski18nResourcesZh_hantAllJsonBytes()
+ if err != nil {
+ return nil, err
+ }
- info := bindataFileInfo{name: "wski18n/resources/zh_Hant.all.json", size: 0, mode: os.FileMode(420), modTime: time.Unix(1500653295, 0)}
- a := &asset{bytes: bytes, info: info}
- return a, nil
+ info := bindataFileInfo{name: "wski18n/resources/zh_Hant.all.json", size: 0, mode: os.FileMode(420), modTime: time.Unix(1501631495, 0)}
+ a := &asset{bytes: bytes, info: info}
+ return a, nil
}
// Asset loads and returns the asset for the given name.
// It returns an error if the asset could not be found or
// could not be loaded.
func Asset(name string) ([]byte, error) {
- cannonicalName := strings.Replace(name, "\\", "/", -1)
- if f, ok := _bindata[cannonicalName]; ok {
- a, err := f()
- if err != nil {
- return nil, fmt.Errorf("Asset %s can't read by error: %v", name, err)
- }
- return a.bytes, nil
- }
- return nil, fmt.Errorf("Asset %s not found", name)
+ cannonicalName := strings.Replace(name, "\\", "/", -1)
+ if f, ok := _bindata[cannonicalName]; ok {
+ a, err := f()
+ if err != nil {
+ return nil, fmt.Errorf("Asset %s can't read by error: %v", name, err)
+ }
+ return a.bytes, nil
+ }
+ return nil, fmt.Errorf("Asset %s not found", name)
}
// MustAsset is like Asset but panics when Asset would return an error.
// It simplifies safe initialization of global variables.
func MustAsset(name string) []byte {
- a, err := Asset(name)
- if err != nil {
- panic("asset: Asset(" + name + "): " + err.Error())
- }
+ a, err := Asset(name)
+ if err != nil {
+ panic("asset: Asset(" + name + "): " + err.Error())
+ }
- return a
+ return a
}
// AssetInfo loads and returns the asset info for the given name.
// It returns an error if the asset could not be found or
// could not be loaded.
func AssetInfo(name string) (os.FileInfo, error) {
- cannonicalName := strings.Replace(name, "\\", "/", -1)
- if f, ok := _bindata[cannonicalName]; ok {
- a, err := f()
- if err != nil {
- return nil, fmt.Errorf("AssetInfo %s can't read by error: %v", name, err)
- }
- return a.info, nil
- }
- return nil, fmt.Errorf("AssetInfo %s not found", name)
+ cannonicalName := strings.Replace(name, "\\", "/", -1)
+ if f, ok := _bindata[cannonicalName]; ok {
+ a, err := f()
+ if err != nil {
+ return nil, fmt.Errorf("AssetInfo %s can't read by error: %v", name, err)
+ }
+ return a.info, nil
+ }
+ return nil, fmt.Errorf("AssetInfo %s not found", name)
}
// AssetNames returns the names of the assets.
func AssetNames() []string {
- names := make([]string, 0, len(_bindata))
- for name := range _bindata {
- names = append(names, name)
- }
- return names
+ names := make([]string, 0, len(_bindata))
+ for name := range _bindata {
+ names = append(names, name)
+ }
+ return names
}
// _bindata is a table, holding each asset generator, mapped to its name.
var _bindata = map[string]func() (*asset, error){
- "wski18n/resources/de_DE.all.json": wski18nResourcesDe_deAllJson,
- "wski18n/resources/en_US.all.json": wski18nResourcesEn_usAllJson,
- "wski18n/resources/es_ES.all.json": wski18nResourcesEs_esAllJson,
- "wski18n/resources/fr_FR.all.json": wski18nResourcesFr_frAllJson,
- "wski18n/resources/it_IT.all.json": wski18nResourcesIt_itAllJson,
- "wski18n/resources/ja_JA.all.json": wski18nResourcesJa_jaAllJson,
- "wski18n/resources/ko_KR.all.json": wski18nResourcesKo_krAllJson,
- "wski18n/resources/pt_BR.all.json": wski18nResourcesPt_brAllJson,
- "wski18n/resources/zh_Hans.all.json": wski18nResourcesZh_hansAllJson,
- "wski18n/resources/zh_Hant.all.json": wski18nResourcesZh_hantAllJson,
+ "wski18n/resources/de_DE.all.json": wski18nResourcesDe_deAllJson,
+ "wski18n/resources/en_US.all.json": wski18nResourcesEn_usAllJson,
+ "wski18n/resources/es_ES.all.json": wski18nResourcesEs_esAllJson,
+ "wski18n/resources/fr_FR.all.json": wski18nResourcesFr_frAllJson,
+ "wski18n/resources/it_IT.all.json": wski18nResourcesIt_itAllJson,
+ "wski18n/resources/ja_JA.all.json": wski18nResourcesJa_jaAllJson,
+ "wski18n/resources/ko_KR.all.json": wski18nResourcesKo_krAllJson,
+ "wski18n/resources/pt_BR.all.json": wski18nResourcesPt_brAllJson,
+ "wski18n/resources/zh_Hans.all.json": wski18nResourcesZh_hansAllJson,
+ "wski18n/resources/zh_Hant.all.json": wski18nResourcesZh_hantAllJson,
}
// AssetDir returns the file names below a certain
@@ -372,92 +372,92 @@ var _bindata = map[string]func() (*asset, error){
// AssetDir("foo.txt") and AssetDir("notexist") would return an error
// AssetDir("") will return []string{"data"}.
func AssetDir(name string) ([]string, error) {
- node := _bintree
- if len(name) != 0 {
- cannonicalName := strings.Replace(name, "\\", "/", -1)
- pathList := strings.Split(cannonicalName, "/")
- for _, p := range pathList {
- node = node.Children[p]
- if node == nil {
- return nil, fmt.Errorf("Asset %s not found", name)
- }
- }
- }
- if node.Func != nil {
- return nil, fmt.Errorf("Asset %s not found", name)
- }
- rv := make([]string, 0, len(node.Children))
- for childName := range node.Children {
- rv = append(rv, childName)
- }
- return rv, nil
+ node := _bintree
+ if len(name) != 0 {
+ cannonicalName := strings.Replace(name, "\\", "/", -1)
+ pathList := strings.Split(cannonicalName, "/")
+ for _, p := range pathList {
+ node = node.Children[p]
+ if node == nil {
+ return nil, fmt.Errorf("Asset %s not found", name)
+ }
+ }
+ }
+ if node.Func != nil {
+ return nil, fmt.Errorf("Asset %s not found", name)
+ }
+ rv := make([]string, 0, len(node.Children))
+ for childName := range node.Children {
+ rv = append(rv, childName)
+ }
+ return rv, nil
}
type bintree struct {
- Func func() (*asset, error)
- Children map[string]*bintree
+ Func func() (*asset, error)
+ Children map[string]*bintree
}
var _bintree = &bintree{nil, map[string]*bintree{
- "wski18n": &bintree{nil, map[string]*bintree{
- "resources": &bintree{nil, map[string]*bintree{
- "de_DE.all.json": &bintree{wski18nResourcesDe_deAllJson, map[string]*bintree{}},
- "en_US.all.json": &bintree{wski18nResourcesEn_usAllJson, map[string]*bintree{}},
- "es_ES.all.json": &bintree{wski18nResourcesEs_esAllJson, map[string]*bintree{}},
- "fr_FR.all.json": &bintree{wski18nResourcesFr_frAllJson, map[string]*bintree{}},
- "it_IT.all.json": &bintree{wski18nResourcesIt_itAllJson, map[string]*bintree{}},
- "ja_JA.all.json": &bintree{wski18nResourcesJa_jaAllJson, map[string]*bintree{}},
- "ko_KR.all.json": &bintree{wski18nResourcesKo_krAllJson, map[string]*bintree{}},
- "pt_BR.all.json": &bintree{wski18nResourcesPt_brAllJson, map[string]*bintree{}},
- "zh_Hans.all.json": &bintree{wski18nResourcesZh_hansAllJson, map[string]*bintree{}},
- "zh_Hant.all.json": &bintree{wski18nResourcesZh_hantAllJson, map[string]*bintree{}},
- }},
- }},
+ "wski18n": &bintree{nil, map[string]*bintree{
+ "resources": &bintree{nil, map[string]*bintree{
+ "de_DE.all.json": &bintree{wski18nResourcesDe_deAllJson, map[string]*bintree{}},
+ "en_US.all.json": &bintree{wski18nResourcesEn_usAllJson, map[string]*bintree{}},
+ "es_ES.all.json": &bintree{wski18nResourcesEs_esAllJson, map[string]*bintree{}},
+ "fr_FR.all.json": &bintree{wski18nResourcesFr_frAllJson, map[string]*bintree{}},
+ "it_IT.all.json": &bintree{wski18nResourcesIt_itAllJson, map[string]*bintree{}},
+ "ja_JA.all.json": &bintree{wski18nResourcesJa_jaAllJson, map[string]*bintree{}},
+ "ko_KR.all.json": &bintree{wski18nResourcesKo_krAllJson, map[string]*bintree{}},
+ "pt_BR.all.json": &bintree{wski18nResourcesPt_brAllJson, map[string]*bintree{}},
+ "zh_Hans.all.json": &bintree{wski18nResourcesZh_hansAllJson, map[string]*bintree{}},
+ "zh_Hant.all.json": &bintree{wski18nResourcesZh_hantAllJson, map[string]*bintree{}},
+ }},
+ }},
}}
// RestoreAsset restores an asset under the given directory
func RestoreAsset(dir, name string) error {
- data, err := Asset(name)
- if err != nil {
- return err
- }
- info, err := AssetInfo(name)
- if err != nil {
- return err
- }
- err = os.MkdirAll(_filePath(dir, filepath.Dir(name)), os.FileMode(0755))
- if err != nil {
- return err
- }
- err = ioutil.WriteFile(_filePath(dir, name), data, info.Mode())
- if err != nil {
- return err
- }
- err = os.Chtimes(_filePath(dir, name), info.ModTime(), info.ModTime())
- if err != nil {
- return err
- }
- return nil
+ data, err := Asset(name)
+ if err != nil {
+ return err
+ }
+ info, err := AssetInfo(name)
+ if err != nil {
+ return err
+ }
+ err = os.MkdirAll(_filePath(dir, filepath.Dir(name)), os.FileMode(0755))
+ if err != nil {
+ return err
+ }
+ err = ioutil.WriteFile(_filePath(dir, name), data, info.Mode())
+ if err != nil {
+ return err
+ }
+ err = os.Chtimes(_filePath(dir, name), info.ModTime(), info.ModTime())
+ if err != nil {
+ return err
+ }
+ return nil
}
// RestoreAssets restores an asset under the given directory recursively
func RestoreAssets(dir, name string) error {
- children, err := AssetDir(name)
- // File
- if err != nil {
- return RestoreAsset(dir, name)
- }
- // Dir
- for _, child := range children {
- err = RestoreAssets(dir, filepath.Join(name, child))
- if err != nil {
- return err
- }
- }
- return nil
+ children, err := AssetDir(name)
+ // File
+ if err != nil {
+ return RestoreAsset(dir, name)
+ }
+ // Dir
+ for _, child := range children {
+ err = RestoreAssets(dir, filepath.Join(name, child))
+ if err != nil {
+ return err
+ }
+ }
+ return nil
}
func _filePath(dir, name string) string {
- cannonicalName := strings.Replace(name, "\\", "/", -1)
- return filepath.Join(append([]string{dir}, strings.Split(cannonicalName, "/")...)...)
+ cannonicalName := strings.Replace(name, "\\", "/", -1)
+ return filepath.Join(append([]string{dir}, strings.Split(cannonicalName, "/")...)...)
}
diff --git a/wski18n/resources/en_US.all.json b/wski18n/resources/en_US.all.json
index 34a6be1..8cfb67c 100644
--- a/wski18n/resources/en_US.all.json
+++ b/wski18n/resources/en_US.all.json
@@ -334,6 +334,14 @@
{
"id": "The name of the application {{.appNameDeploy}} in deployment file at [{{.deploymentFile}}] does not match the name of the application {{.appNameManifest}}} in manifest file at [{{.manifestFile}}].",
"translation": "The name of the application {{.appNameDeploy}} in deployment file at [{{.deploymentFile}}] does not match the name of the application {{.appNameManifest}}} in manifest file at [{{.manifestFile}}]."
+ },
+ {
+ "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": "WARNING: application in manifest file will soon be deprecated, please use project instead.\n",
+ "translation": "WARNING: application in manifest file will soon be deprecated, please use project instead.\n"
}
]
--
To stop receiving notification emails like this one, please contact
['"commits@openwhisk.apache.org" <co...@openwhisk.apache.org>'].