You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openwhisk.apache.org by lz...@apache.org on 2017/08/31 01:34:28 UTC
[incubator-openwhisk-wskdeploy] branch master updated: Adding
deprecation warning for using package in deployment file (#418)
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 <pd...@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" <co...@openwhisk.apache.org>'].