This is an automated email from the ASF dual-hosted git repository. lz1982 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 b429552 Adding deprecation warning for using package in deployment file (#418) b429552 is described below commit b42955299142fb89e2dfef7fbed989954430575b Author: Priti Desai <pde...@us.ibm.com> AuthorDate: Wed Aug 30 18:34:26 2017 -0700 Adding deprecation warning for using package in deployment file (#418) * Adding deprecation warning for using package in deployment file * Converting array of packages to map * updating integration tests deployment files * binding input values instead of param struct * Adding integration tests * git is forcing to rename integration tests as previous commit created some discrepancy --- deployers/deploymentreader.go | 59 ++++++++++++++-------- deployers/deploymentreader_test.go | 2 +- parsers/yamlparser.go | 2 +- tests/dat/deployment.yaml | 2 +- tests/src/integration/flagstests/deployment.yml | 6 +-- tests/src/integration/flagstests/manifest.yml | 2 +- tests/src/integration/triggerrule/deployment.yml | 6 +-- .../actions/helloworld.js | 11 ++++ .../validatePackageInDeployment/deployment.yaml | 9 ++++ .../validatePackageInDeployment/manifest.yaml | 12 +++++ .../validatePackageInDeployment_test.go | 42 +++++++++++++++ .../actions/helloworld.js | 11 ++++ .../validatePackagesInDeployment/deployment.yaml | 9 ++++ .../validatePackagesInDeployment/manifest.yaml | 12 +++++ .../validatePackagesInDeployment_test.go | 42 +++++++++++++++ tests/src/integration/zipaction/deployment.yml | 4 +- tests/usecases/alarmtrigger/deployment.yaml | 4 +- tests/usecases/badyaml/deployment.yaml | 6 +-- tests/usecases/data-processing-app/deployment.yaml | 2 +- .../usecases/defaulttest-bindings/deployment.yaml | 2 +- tests/usecases/openstack/deployment.yaml | 4 +- tests/usecases/triggerrule/deployment.yml | 2 +- tests/usecases/whiskbot/deployment.yaml | 2 +- 23 files changed, 207 insertions(+), 46 deletions(-) diff --git a/deployers/deploymentreader.go b/deployers/deploymentreader.go index 967916a..42db43d 100644 --- a/deployers/deploymentreader.go +++ b/deployers/deploymentreader.go @@ -23,6 +23,7 @@ import ( "github.com/apache/incubator-openwhisk-client-go/whisk" "github.com/apache/incubator-openwhisk-wskdeploy/parsers" "github.com/apache/incubator-openwhisk-wskdeploy/utils" + "log" ) type DeploymentReader struct { @@ -63,18 +64,27 @@ func (reader *DeploymentReader) BindAssets() error { func (reader *DeploymentReader) bindPackageInputsAndAnnotations() { - packArray := make([]parsers.Package, 0) + packMap := make(map[string]parsers.Package) if reader.DeploymentDescriptor.Application.Packages == nil { - packArray = append(packArray, reader.DeploymentDescriptor.Application.Package) + // a single package is specified in deployment YAML file with "package" key + packMap[reader.DeploymentDescriptor.Application.Package.Packagename] = reader.DeploymentDescriptor.Application.Package + log.Println("WARNING: The package YAML key in deployment file will soon be deprecated. Please use packages instead as described in specifications.") } else { - for _, depPacks := range reader.DeploymentDescriptor.Application.Packages { - packArray = append(packArray, depPacks) + for packName, depPacks := range reader.DeploymentDescriptor.Application.Packages { + depPacks.Packagename = packName + packMap[packName] = depPacks } } - for _, pack := range packArray { - serviceDeployPack := reader.serviceDeployer.Deployment.Packages[pack.Packagename] + for packName, pack := range packMap { + + serviceDeployPack := reader.serviceDeployer.Deployment.Packages[packName] + + if serviceDeployPack == nil { + log.Println("WARNING: Package name in deployment file " + packName + " does not match with manifest file.") + break + } keyValArr := make(whisk.KeyValueArr, 0) @@ -84,7 +94,7 @@ func (reader *DeploymentReader) bindPackageInputsAndAnnotations() { keyVal.Key = name - keyVal.Value = utils.GetEnvVar(input) + keyVal.Value = utils.GetEnvVar(input.Value) keyValArr = append(keyValArr, keyVal) } @@ -123,21 +133,27 @@ func (reader *DeploymentReader) bindPackageInputsAndAnnotations() { func (reader *DeploymentReader) bindActionInputsAndAnnotations() { - packArray := make([]parsers.Package, 1) + packMap := make(map[string]parsers.Package) if reader.DeploymentDescriptor.Application.Packages == nil { - packArray = append(packArray, reader.DeploymentDescriptor.Application.Package) + // a single package is specified in deployment YAML file with "package" key + packMap[reader.DeploymentDescriptor.Application.Package.Packagename] = reader.DeploymentDescriptor.Application.Package } else { - for _, depPacks := range reader.DeploymentDescriptor.Application.Packages { - packArray = append(packArray, depPacks) + for packName, depPacks := range reader.DeploymentDescriptor.Application.Packages { + depPacks.Packagename = packName + packMap[packName] = depPacks } } - for _, pack := range packArray { + for packName, pack := range packMap { - for actionName, action := range pack.Actions { + serviceDeployPack := reader.serviceDeployer.Deployment.Packages[packName] + + if serviceDeployPack == nil { + break + } - serviceDeployPack := reader.serviceDeployer.Deployment.Packages[pack.Packagename] + for actionName, action := range pack.Actions { keyValArr := make(whisk.KeyValueArr, 0) @@ -147,7 +163,7 @@ func (reader *DeploymentReader) bindActionInputsAndAnnotations() { keyVal.Key = name - keyVal.Value = utils.GetEnvVar(input) + keyVal.Value = utils.GetEnvVar(input.Value) keyValArr = append(keyValArr, keyVal) } @@ -190,17 +206,18 @@ func (reader *DeploymentReader) bindActionInputsAndAnnotations() { func (reader *DeploymentReader) bindTriggerInputsAndAnnotations() { - packArray := make([]parsers.Package, 1) + packMap := make(map[string]parsers.Package) if reader.DeploymentDescriptor.Application.Packages == nil { - packArray = append(packArray, reader.DeploymentDescriptor.Application.Package) + packMap[reader.DeploymentDescriptor.Application.Package.Packagename] = reader.DeploymentDescriptor.Application.Package } else { - for _, depPacks := range reader.DeploymentDescriptor.Application.Packages { - packArray = append(packArray, depPacks) + for packName, depPacks := range reader.DeploymentDescriptor.Application.Packages { + depPacks.Packagename = packName + packMap[packName] = depPacks } } - for _, pack := range packArray { + for _, pack := range packMap { serviceDeployment := reader.serviceDeployer.Deployment @@ -213,7 +230,7 @@ func (reader *DeploymentReader) bindTriggerInputsAndAnnotations() { var keyVal whisk.KeyValue keyVal.Key = name - keyVal.Value = utils.GetEnvVar(input) + keyVal.Value = utils.GetEnvVar(input.Value) keyValArr = append(keyValArr, keyVal) } diff --git a/deployers/deploymentreader_test.go b/deployers/deploymentreader_test.go index ad0b85c..5b2fe03 100644 --- a/deployers/deploymentreader_test.go +++ b/deployers/deploymentreader_test.go @@ -40,7 +40,7 @@ func init() { // Check DeploymentReader could handle deployment yaml successfully. func TestDeploymentReader_HandleYaml(t *testing.T) { dr.HandleYaml() - assert.Equal(t, "JiraBackupSolution", dr.DeploymentDescriptor.Application.Package.Packagename, "DeploymentReader handle deployment yaml failed.") + assert.NotNil(t, dr.DeploymentDescriptor.Application.Packages["JiraBackupSolution"], "DeploymentReader handle deployment yaml failed.") } func TestDeployerCheck(t *testing.T) { diff --git a/parsers/yamlparser.go b/parsers/yamlparser.go index 88f64d1..3a6a686 100644 --- a/parsers/yamlparser.go +++ b/parsers/yamlparser.go @@ -162,7 +162,7 @@ type Application struct { ApiHost string `yaml:"apiHost"` Version string `yaml:"version"` Packages map[string]Package `yaml:"packages"` //used in deployment.yaml - Package Package `yaml:"package"` + Package Package `yaml:"package"` // being deprecated, used in deployment.yaml } type DeploymentYAML struct { diff --git a/tests/dat/deployment.yaml b/tests/dat/deployment.yaml index 60908b1..aad8c0b 100644 --- a/tests/dat/deployment.yaml +++ b/tests/dat/deployment.yaml @@ -1,5 +1,5 @@ --- -package: +packages: actions: - function: src/hello/hello.js diff --git a/tests/src/integration/flagstests/deployment.yml b/tests/src/integration/flagstests/deployment.yml index c37e706..73ad7b3 100644 --- a/tests/src/integration/flagstests/deployment.yml +++ b/tests/src/integration/flagstests/deployment.yml @@ -1,10 +1,8 @@ application: name: wskdeploy-samples - package: - triggerrule: - name: helloWorldFlags - namespace: guest + packages: + helloWorldFlags: actions: greeting: inputs: diff --git a/tests/src/integration/flagstests/manifest.yml b/tests/src/integration/flagstests/manifest.yml index 5970bba..d119fca 100644 --- a/tests/src/integration/flagstests/manifest.yml +++ b/tests/src/integration/flagstests/manifest.yml @@ -1,5 +1,5 @@ package: - name: helloworldFlags + name: helloWorldFlags version: 1.0 license: Apache-2.0 actions: diff --git a/tests/src/integration/triggerrule/deployment.yml b/tests/src/integration/triggerrule/deployment.yml index 27b32e4..6bfbafe 100644 --- a/tests/src/integration/triggerrule/deployment.yml +++ b/tests/src/integration/triggerrule/deployment.yml @@ -1,10 +1,8 @@ application: name: wskdeploy-samples - package: - triggerrule: - name: helloWorldTriggerRule - namespace: guest + packages: + helloWorldTriggerRule: actions: greeting: inputs: diff --git a/tests/src/integration/validatePackageInDeployment/actions/helloworld.js b/tests/src/integration/validatePackageInDeployment/actions/helloworld.js new file mode 100644 index 0000000..eaa6834 --- /dev/null +++ b/tests/src/integration/validatePackageInDeployment/actions/helloworld.js @@ -0,0 +1,11 @@ +/** + * Return a simple greeting message for someone. + * + * @param name A person's name. + * @param place Where the person is from. + */ +function main(params) { + var name = params.name || params.payload || 'stranger'; + var place = params.place || 'somewhere'; + return {payload: 'Hello, ' + name + ' from ' + place + '!'}; +} diff --git a/tests/src/integration/validatePackageInDeployment/deployment.yaml b/tests/src/integration/validatePackageInDeployment/deployment.yaml new file mode 100644 index 0000000..7242d68 --- /dev/null +++ b/tests/src/integration/validatePackageInDeployment/deployment.yaml @@ -0,0 +1,9 @@ +application: + name: IntegrationTestPackageInDeployment + package: + name: TestPackageInDeploymentFile + actions: + helloworld: + inputs: + name: Amy Validating Package + place: California diff --git a/tests/src/integration/validatePackageInDeployment/manifest.yaml b/tests/src/integration/validatePackageInDeployment/manifest.yaml new file mode 100644 index 0000000..ff59483 --- /dev/null +++ b/tests/src/integration/validatePackageInDeployment/manifest.yaml @@ -0,0 +1,12 @@ +package: + name: TestPackageInDeploymentFile + actions: + helloworld: + function: actions/helloworld.js + runtime: nodejs:6 + inputs: + name: string + place: string + outputs: + payload: string + diff --git a/tests/src/integration/validatePackageInDeployment/validatePackageInDeployment_test.go b/tests/src/integration/validatePackageInDeployment/validatePackageInDeployment_test.go new file mode 100644 index 0000000..f98ec9d --- /dev/null +++ b/tests/src/integration/validatePackageInDeployment/validatePackageInDeployment_test.go @@ -0,0 +1,42 @@ +// +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 wskprops = common.GetWskprops() + +func TestPackageInDeploymentFile(t *testing.T) { + 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.") +} + +var ( + manifestPath = os.Getenv("GOPATH") + "/src/github.com/apache/incubator-openwhisk-wskdeploy/tests/src/integration/validatePackageInDeployment/manifest.yaml" + deploymentPath = os.Getenv("GOPATH") + "/src/github.com/apache/incubator-openwhisk-wskdeploy/tests/src/integration/validatePackageInDeployment/deployment.yaml" +) diff --git a/tests/src/integration/validatePackagesInDeployment/actions/helloworld.js b/tests/src/integration/validatePackagesInDeployment/actions/helloworld.js new file mode 100644 index 0000000..eaa6834 --- /dev/null +++ b/tests/src/integration/validatePackagesInDeployment/actions/helloworld.js @@ -0,0 +1,11 @@ +/** + * Return a simple greeting message for someone. + * + * @param name A person's name. + * @param place Where the person is from. + */ +function main(params) { + var name = params.name || params.payload || 'stranger'; + var place = params.place || 'somewhere'; + return {payload: 'Hello, ' + name + ' from ' + place + '!'}; +} diff --git a/tests/src/integration/validatePackagesInDeployment/deployment.yaml b/tests/src/integration/validatePackagesInDeployment/deployment.yaml new file mode 100644 index 0000000..541e0cb --- /dev/null +++ b/tests/src/integration/validatePackagesInDeployment/deployment.yaml @@ -0,0 +1,9 @@ +application: + name: IntegrationTestPackagesInDeployment + packages: + TestPackagesInDeploymentFile: + actions: + helloworld: + inputs: + name: Amy Validating Packages + place: California diff --git a/tests/src/integration/validatePackagesInDeployment/manifest.yaml b/tests/src/integration/validatePackagesInDeployment/manifest.yaml new file mode 100644 index 0000000..30918df --- /dev/null +++ b/tests/src/integration/validatePackagesInDeployment/manifest.yaml @@ -0,0 +1,12 @@ +package: + name: TestPackagesInDeploymentFile + actions: + helloworld: + function: actions/helloworld.js + runtime: nodejs:6 + inputs: + name: string + place: string + outputs: + payload: string + diff --git a/tests/src/integration/validatePackagesInDeployment/validatePackagesInDeployment_test.go b/tests/src/integration/validatePackagesInDeployment/validatePackagesInDeployment_test.go new file mode 100644 index 0000000..b4c5297 --- /dev/null +++ b/tests/src/integration/validatePackagesInDeployment/validatePackagesInDeployment_test.go @@ -0,0 +1,42 @@ +// +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 wskprops = common.GetWskprops() + +func TestPackagesInDeploymentFile(t *testing.T) { + 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.") +} + +var ( + manifestPath = os.Getenv("GOPATH") + "/src/github.com/apache/incubator-openwhisk-wskdeploy/tests/src/integration/validatePackagesInDeployment/manifest.yaml" + deploymentPath = os.Getenv("GOPATH") + "/src/github.com/apache/incubator-openwhisk-wskdeploy/tests/src/integration/validatePackagesInDeployment/deployment.yaml" +) diff --git a/tests/src/integration/zipaction/deployment.yml b/tests/src/integration/zipaction/deployment.yml index 6574246..2577d8c 100644 --- a/tests/src/integration/zipaction/deployment.yml +++ b/tests/src/integration/zipaction/deployment.yml @@ -1,7 +1,7 @@ application: name: wskdeploy-samples - package: - triggerrule: + packages: + zipaction: name: cat namespace: guest actions: diff --git a/tests/usecases/alarmtrigger/deployment.yaml b/tests/usecases/alarmtrigger/deployment.yaml index 6c27e8b..b8393ab 100644 --- a/tests/usecases/alarmtrigger/deployment.yaml +++ b/tests/usecases/alarmtrigger/deployment.yaml @@ -1,8 +1,8 @@ application: name: HelloWorldEvery12Hours namespace: _ - package: - name: helloworld + packages: + helloworld: actions: helloworld: inputs: diff --git a/tests/usecases/badyaml/deployment.yaml b/tests/usecases/badyaml/deployment.yaml index eb011ad..0a5be72 100644 --- a/tests/usecases/badyaml/deployment.yaml +++ b/tests/usecases/badyaml/deployment.yaml @@ -2,9 +2,9 @@ Application: name: testapp namespace: _ version: 1.0 - package: - name: kafka - iputs: + packages: + kafka: + iputs: kafka_rest_url: https://kafka-rest-prod01.messagehub.services.us-south.bluemix.net:443 topic: out-topic triggers: diff --git a/tests/usecases/data-processing-app/deployment.yaml b/tests/usecases/data-processing-app/deployment.yaml index e1c83a0..073af2c 100644 --- a/tests/usecases/data-processing-app/deployment.yaml +++ b/tests/usecases/data-processing-app/deployment.yaml @@ -2,7 +2,7 @@ application: name: testapp namespace: _ version: 1.0 - package: + packages: name: kafka inputs: kafka_rest_url: https://kafka-rest-prod01.messagehub.services.us-south.bluemix.net:443 diff --git a/tests/usecases/defaulttest-bindings/deployment.yaml b/tests/usecases/defaulttest-bindings/deployment.yaml index c12c9dc..fd243a2 100644 --- a/tests/usecases/defaulttest-bindings/deployment.yaml +++ b/tests/usecases/defaulttest-bindings/deployment.yaml @@ -2,7 +2,7 @@ application: name: myHello namespace: _ version: 0.0.1 - package: + packages: name: defaulttest actions: greeting: diff --git a/tests/usecases/openstack/deployment.yaml b/tests/usecases/openstack/deployment.yaml index 78fb10c..52d3400 100644 --- a/tests/usecases/openstack/deployment.yaml +++ b/tests/usecases/openstack/deployment.yaml @@ -2,8 +2,8 @@ application: name: GBSBackups version: 0.0.1 namespace: _ - package: - name: JiraBackupSolution + packages: + JiraBackupSolution: actions: getApiToken: inputs: diff --git a/tests/usecases/triggerrule/deployment.yml b/tests/usecases/triggerrule/deployment.yml index 2c47834..1541b3f 100644 --- a/tests/usecases/triggerrule/deployment.yml +++ b/tests/usecases/triggerrule/deployment.yml @@ -1,7 +1,7 @@ application: name: wskdeploy-samples - package: + packages: triggerrule: name: helloworld namespace: guest diff --git a/tests/usecases/whiskbot/deployment.yaml b/tests/usecases/whiskbot/deployment.yaml index 88ac386..94aa0fe 100644 --- a/tests/usecases/whiskbot/deployment.yaml +++ b/tests/usecases/whiskbot/deployment.yaml @@ -2,7 +2,7 @@ Application: name: whiskbot namespace: mynamespace version: 1.0 - package: + packages: name: whiskbot inputs: fieldToEncrypt: XXXX -- To stop receiving notification emails like this one, please contact ['"commits@openwhisk.apache.org" <commits@openwhisk.apache.org>'].